跳转到主要内容

预提交钩子的列表,用于格式化您的源代码。

项目描述

语言格式化预提交钩子

Github Actions CI Coverage PyPi version Supported Python versions

关于

此包提供通过使用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,此步骤将自动完成。

贡献

贡献总是受欢迎的。

  1. 叉项目
  2. 创建您的功能分支(git checkout -b my-new-feature
  3. 添加您的修改
  4. 推送到分支(git push origin my-new-feature
  5. 创建新的拉取请求

常见问题解答

如何处理不同的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-javapretty-format-kotlin 插件。这些插件依赖于在您的计算机上安装了版本 11 或更高版本的 java

由于您正在使用 编译为 JVM 的语言,我们假设您已经在系统中安装了 java。您可能没有安装所需的最小版本。

要解决这种情况,您有以下两种方法可用

  1. 在您的系统上安装多个 java 版本,并确保在运行预提交钩子时,JRE 11+ 可用于您的 PATH 变量(即 PATH=${JRE_11_PATH}:${PATH} pre-commit run)。

  2. 通过使用 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-javapretty-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)

  • 添加对ktfmt Kotlin代码格式化器的支持 - PR #196 - @aandres 感谢您的贡献
  • 将KTLint更新到版本1.0.1

2.11.0 (2023-10-11)

  • 将KTLint更新到版本1.0.0
  • 将GoogleJavaFormatter更新到1.18.1
  • 使库兼容Python 3.12 - PR #182 - @Delgan 感谢您的贡献

2.10.0 (2023-07-13)

  • pretty-format-toml添加--indent--trailing-commas参数 - PR #160 - @maresb 感谢您的贡献
  • 改进pretty-format-kotlinktlint的交互,以防止尝试格式化非Kotlin文件,(问题 #162) - PR #163 - @languitar 感谢您的贡献
  • 改进pretty-format-kotlin以减少日志冗余 - PR #177 - @Velfi 感谢您的贡献
  • 允许pretty-format-javapretty-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)

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)

  • 更新 KTLint 至 0.36.0
  • 增强 pretty-format-yaml 以处理只包含原始类型的 YAML 文件 - PR #1 - 感谢 @dan-cohn 的贡献

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 (26.7 kB 查看散列值)

上传时间 源代码

构建发行版

language_formatters_pre_commit_hooks-2.14.0-py2.py3-none-any.whl (27.9 kB 查看散列值)

上传时间 Python 2 Python 3

由以下机构支持

AWSAWS 云计算和安全赞助商 DatadogDatadog 监控 FastlyFastly CDN GoogleGoogle 下载分析 MicrosoftMicrosoft PSF赞助商 PingdomPingdom 监控 SentrySentry 错误记录 StatusPageStatusPage 状态页面