预提交钩子的列表,用于格式化您的源代码。
项目描述
语言格式化预提交钩子
关于
此包提供通过使用pre-commit
钩子来确保您的代码格式良好的实用工具
美观格式化钩子列表
pretty-format-golang
pretty-format-ini
pretty-format-java
pretty-format-kotlin
pretty-format-rust
pretty-format-toml
pretty-format-yaml
⚠:上面的列表可能与公开的预提交钩子不同步。
有关更详细的列表,请参阅.pre-commit-hooks.yaml
。
示例用法
将类似的片段添加到您的.pre-commit-config.yaml
文件中
- repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks
rev: ${LATEST_SHA_OR_VERSION}
hooks:
- id: pretty-format-java
args: [--autofix]
- id: pretty-format-kotlin
args: [--autofix]
- id: pretty-format-yaml
args: [--autofix, --indent, '2']
开发
此工具使用tox作为构建虚拟环境的主要工具。
要开始,只需运行make development
。
如果您已安装aactivator
,此步骤将自动完成。
贡献
贡献总是受欢迎的。
- 叉项目
- 创建您的功能分支(
git checkout -b my-new-feature
) - 添加您的修改
- 推送到分支(
git push origin my-new-feature
) - 创建新的拉取请求
常见问题解答
如何处理不同的Google Java格式化器版本?
- repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks
rev: ...
hooks:
- id: pretty-format-java
args: [--autofix, --aosp, --google-java-formatter-version=1.16.0]
如何处理多个Java版本?
这可能适用于 pretty-format-java
和 pretty-format-kotlin
插件。这些插件依赖于在您的计算机上安装了版本 11 或更高版本的 java
。
由于您正在使用 编译为 JVM 的语言,我们假设您已经在系统中安装了 java
。您可能没有安装所需的最小版本。
要解决这种情况,您有以下两种方法可用
-
在您的系统上安装多个
java
版本,并确保在运行预提交钩子时,JRE 11+ 可用于您的PATH
变量(即PATH=${JRE_11_PATH}:${PATH} pre-commit run
)。 -
通过使用
docker
来解决这个问题。⚠:此方法在编写时已在 Linux 和 MacOS 上进行了测试。如果无法在系统上安装额外的 JRE 版本,或者这样做不可行(例如,在 CI 系统上),则应首选此方法。请注意,您需要在系统上安装
docker
。在存储
.pre-commit-config.yaml
的仓库根目录中添加以下Dockerfile
FROM python:3.7-alpine # Install JRE-11 as we will run pre-commit hooks that depends an Java 11+ RUN apk add --no-cache openjdk11-jre ENV PRE_COMMIT_HOME /pre-commit-docker-cache ENV PRE_COMMIT_LANGUAGE_FORMATTERS_VERSION ${version of the library to install} RUN set -x \ && pip install --no-cache-dir language-formatters-pre-commit-hooks==${PRE_COMMIT_LANGUAGE_FORMATTERS_VERSION} \ # Run pre-commit-hook to ensure that jars are downloaded and stored in the docker image # Run the hooks that you're planning to run within docker. # This reduces premission issues as well has makes all the run fast as the lazy-dependencies are pre-fetched && pretty-format-java \ # Update permissions as hooks will be run as your host-system user (your username) but the image is built as root && chmod a+r ${PRE_COMMIT_HOME}/*
以及以下钩子到您的
.pre-commit-config.yaml
文件repos: - repo: local hooks: - id: pretty-format-java-in-docker # Useful to eventually SKIP pre-commit hooks name: pretty-format-java-in-docker # This is required, put something sensible language: docker # Self explanatory entry: pretty-format-java # Hook that you want to run in docker args: [...] # Arguments that would would pass to the hook (as if it was local) files: ^.*\.java$ # File filter has to be added ;)
通过以下方式,所选钩子(例如示例中的
pretty-format-java
)将在 Docker 容器中执行。侧注:我们没有在仓库中嵌入 Dockerfile,因为这更多是一种解决方法,以支持那些无法在用户库系统上安装较新 Java 版本的用户,并且因此我们不打算全面支持此方法,除了提供可能的解决方案(Java 11+ 于 2018 年 9 月发布)。
如何使用预先下载的 google-java-format jar 文件?
您可以将 jar 文件路径传递给 --google-java-formatter-jar
参数
- repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks
rev: ...
hooks:
- id: pretty-format-java
args: [--google-java-formatter-jar=/usr/bin/google-java-format-1.17.0-all-deps.jar]
如何使用预先下载的 ktlint jar 文件?
您可以将 jar 文件路径传递给 --ktlint-jar
参数
- repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks
rev: ...
hooks:
- id: pretty-format-kotlin
args: [--ktlint-jar=/usr/bin/ktlint.jar]
如何使用预先下载的 ktfmt jar 文件?
您可以将 jar 文件路径传递给 --ktfmt-jar
参数
- repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks
rev: ...
hooks:
- id: pretty-format-kotlin
args: [--ktfmt, --ktfmt-jar=/usr/bin/ktfmt-0.47.jar]
如何验证 jar 的校验和?
仅支持 pretty-format-java
和 pretty-format-kotlin-hooks
使用相应的 [...]-checksum
参数
- repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks
rev: ...
hooks:
- id: pretty-format-java
args: [
--google-java-formatter-version=1.17.0,
--formatter-jar-checksum=33068bbbdce1099982ec1171f5e202898eb35f2919cf486141e439fc6e3a4203,
]
- repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks
rev: ...
hooks:
- id: pretty-format-kotlin
args: [
--ktlint-version=1.2.1,
--formatter-jar-checksum=2e28cf46c27d38076bf63beeba0bdef6a845688d6c5dccd26505ce876094eb92,
]
- repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks
rev: ...
hooks:
- id: pretty-format-kotlin
args: [
--ktfmt,
--ktfmt-version=0.47,
--formatter-jar-checksum=af61161faacd74ac56374e0b43003dbe742ddc0d6a7e2c1fe43e15415e65ffbd,
]
如何使用 ktfmt 替代 ktlint?
- repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks
rev: ...
hooks:
- id: pretty-format-kotlin
args: [--ktfmt, --ktfmt-style=google]
支持的风格是 google(默认)、dropbox 和 kotlinlang
许可证
language-formatters-pre-commit-hooks
使用 Apache License version 2.0
许可。
变更日志
2.14.0 (2024-07-14)
- 将 GoogleJavaFormatter 更新到 1.22.0
- 将 ktfmt 更新到版本 0.51 注意:此更新删除了 dropbbox 格式化风格(在此)。
- 将 KTLint 更新到版本 1.3.1
- [Kotlin] 改进对 ktfmt 的支持 - PR #224 - @mxr
- [Java/Kotlin] 启用下载工件校验和验证 - PR #222 - @mxr
- [Rust] 添加对非 root cargo 项目的支持 - PR #217 - @AJIOB
- [Java] 添加对 palantir-cli 的支持 - PR #213 - @eirnym
- [内部] 更新 pre-commit 钩子、github actions 并删除了过时的
pkg_resources
使用
2.13.0 (2024-03-31)
- 将 KTLint 更新到版本 1.2.1
- 将 GoogleJavaFormatter 更新到版本 1.21.0
- 确保 TOML 处理假设文件具有 UTF-8 编码 - PR #208 - @Jayman2000 感谢您的贡献
- 漂亮的TOML允许自定义行内注释空间 - PR #205 - @alkatar21 感谢您的贡献
- [内部] 更新pre-commit钩子和GitHub动作
2.12.0 (2023-12-19)
2.11.0 (2023-10-11)
2.10.0 (2023-07-13)
- 为
pretty-format-toml
添加--indent
和--trailing-commas
参数 - PR #160 - @maresb 感谢您的贡献 - 改进
pretty-format-kotlin
与ktlint
的交互,以防止尝试格式化非Kotlin文件,(问题 #162) - PR #163 - @languitar 感谢您的贡献 - 改进
pretty-format-kotlin
以减少日志冗余 - PR #177 - @Velfi 感谢您的贡献 - 允许
pretty-format-java
和pretty-format-kotlin
利用预先下载的JAR而不是获取它 - PR #156 / PR #??? - @fabasoad 感谢您的贡献 - 将KTLint更新到0.50.0
2.9.0 (2023-05-13)
- 将GoogleJavaFormatter更新到1.17.0
- 将KTLint更新到0.49.1
- 修复pretty-format-yaml的bug:序列项缩进应考虑偏移量作为缩进的一部分,#154 (评论) 有更多细节。感谢 @datalogics-kam 和 @fmigneault 报告问题并帮助我识别根本原因。
2.8.0 (2023-03-17)
- 将GoogleJavaFormatter更新到1.16.0
2.7.0 (2023-02-18)
- 在
pretty-format-yaml
中添加可自定义的偏移量支持 - PR #143 - 将KTLint更新到0.48.2
2.6.0 (2023-01-20)
- 修复
pretty-format-toml
以兼容最新的toml-sort
库 - 感谢 @liblaf 和 @stewartHutchins 支持使TOML格式化再次工作。修复已在多个PR中实现(PR #134,PR #136 和 PR #137)。 - 内部构建修复(由
tox
主要版本引起的失败) - PR #141,灵感来自 PR #135 - 感谢 @malmans2 的支持 - 将KTlint更新到0.48.1 - PR #140 - 感谢 @detouched 的升级
2.5.0 (2022-12-05)
- 取消JDK 16+限制 - PR #123 - @harti2006 感谢您的贡献
- 将KTlint更新到0.47.1 - PR #125
- pretty_format_rust不再使用显式的rust版本 - PR #126
2.4.0 (2022-07-01)
- 将GoogleJavaFormatter更新到1.15.0
- 将KTlint更新到0.45.1
- 确保对Python 3.10的支持,并取消对Python 3.6的保证支持 - PR #114 / PR #115
- 更新INI文件的美化库(从
configobj
更改为config_formatter
),以提供更确定的输出和适当的注释处理 - PR #113 - 感谢@Delgan的贡献 pretty-format-yaml
允许自定义最大行长度 - PR #104- 美化器失败时提供更明确的错误消息 - PR #116
- 在INI美化器中使用显式编码 - PR #102 - 感谢@hbre的贡献
2.3.0 (2022-02-17)
- 更新GoogleJavaFormatter到1.14.0
- 更新KTLint到0.44.0
- 在YAML美化器中使用显式编码 - PR #92 - 感谢@passionsfrucht的贡献
2.2.0 (2021-08-08)
- 使外部艺术品的下载对具有不同磁盘分区的临时目录的系统具有弹性 - 感谢@psmit和@kbalston的贡献
- 使Google Java Formatter的使用与JDK16+兼容 - 感谢@ostrya的贡献
- 更新GoogleJavaFormatter到1.11.0
- 将KTLint升级到0.42.1
- 其他GitHub工作流程更新(在Python 3.9上测试,更好地跟踪测试的工具版本等)
- 当Google Java Formatter和KTLint不支持Java版本时,改进了错误消息
ℹ: pretty-format-java
现在支持Java 16+ ⚠: pretty-format-kotlin
支持Java 15及以下
2.1.0 (2021-05-28)
- 将KTLint升级到0.40.0
- 更新GoogleJavaFormatter到1.10.0
2.0.0 (2021-01-16)
- 在格式化
ini
文件时保留注释。 PR #45 - 感谢@Skylion007的贡献 - 在格式化
toml
文件时保留注释。 PR #46 - 感谢@Skylion007的贡献 - ⚠取消对Python 2的支持。 PR #48
- 更新KTLint到0.40.0
1.6.1 (2020-10-31)
- 内部修复下载文件路径。 PR #43
1.6.0 (2020-10-24)
- 更新KTLint到0.39.0
- 更新GoogleJavaFormatter到1.9
- 串行运行
pretty-format-java
以防止重复下载相同的Java工件。 PR #23 - 感谢@ineiti的贡献 - 内部更新下载逻辑,以减少从网络下载大型工件时的竞态条件。 PR #24
- 增加支持的
pre-commit
最低版本。 PR #27 - 允许
pretty-format-java
使用CLI参数--google-java-formatter-version
修改Google Java Formatter。 PR #30 - 允许
pretty-format-kotlin
使用CLI参数--ktlint-version
修改KTLint。 PR #30 - 增强命令执行的安全性(防止shell注入)。 PR #38
1.5.0 (2020-06-16)
- 将
--preserve-quotes
参数添加到pretty-format-yaml
中。 PR #16 - 感谢 @vbisserie 的贡献
1.4.2 (2020-06-09)
- 更新 KTLint 至 0.37.1
1.4.1 (2020-06-03)
- 更新 KTLint 至 0.37.0
1.4.0 (2020-05-20)
- 改进多文档 YAML 文件的处理。 PR #3 - 感谢 @dan-cohn 的贡献
pretty-format-java
默认为 Google 风格。添加--aosp
参数以支持 Android 开源项目风格。 PR #8 - 感谢 @ChenAndrew 的贡献。- 更新 GoogleJavaFormatter 至 1.8
1.3.2 (2020-01-25)
- 确定性的打包修复
1.3.1 (2020-01-24)
- 更新打包信息
:warning: 本版本 破坏了模块检索 (:disappointed:) 在提高 PyPi 上传信息质量的同时。建议您使用该库的较新版本。
1.3.0 (2020-01-24)
1.2.5 (2019-11-22)
- 更新 KTLint 至 0.35.0
1.2.4 (2019-07-19)
- 更新 KTLint 至 0.34.0 并修复 KTLint GitHub 链接
1.2.3 (2019-02-14)
- 更新 Google Java Formatter 至 1.7 和 KTlint 至 0.30.0
1.2.2 (2018-11-20)
- 如果
cargo fmt
失败,则 pretty-format-rust 会失败
1.2.1 (2018-11-20)
- 无差异发布
1.2.0 (2018-11-20)
- 将 KTlint 升级至 0.29.0
- 从命令执行中删除重复的文件名
1.1.3 (2018-09-02)
- 最后一次修复 cargo 调用来使用环境定义的工具链
1.1.2 (2018-09-02)
- 将 KTlint 升级至 0.27.0
1.1.1 (2018-09-02)
- 确保生成的文件以换行符结尾
- 通过
RUST_TOOLCHAIN
环境变量允许自定义 rust 工具链
1.1.0 (2018-07-29)
- 为 INI、Rust 和 TOML 文件添加漂亮的格式化程序
1.0.1 (2018-07-20)
- 改进从 Kotlin 格式化程序检测修改文件的能力
1.0.0 (2018-07-20)
- 初始发布:添加 Golang、Java、Kotlin 和 YAML 的漂亮格式化程序
项目详情
哈希值 为 language_formatters_pre_commit_hooks-2.14.0.tar.gz
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f91dc33a6abc957f6ed222b29a8e468444992ae4629a220611521d7c23103a59 |
|
MD5 | b9926647a1265edbb6cf434fe82e9ed8 |
|
BLAKE2b-256 | 31f1710a73d436ce49c2906f0f7f235965a7f1cc0c048898c283f9e78bf6a667 |
哈希值 为 language_formatters_pre_commit_hooks-2.14.0-py2.py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 38fc4551116094a73af306fc70fea7febb1eb236335469c824666f9425434117 |
|
MD5 | df5d47d59f33168eda07becb7017108e |
|
BLAKE2b-256 | e400d90a42456411bfd32bbcbb782d346c18785aceb23bc27a48aa5f6b843183 |