Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Collection of custom pre-commit hooks.

License

NotificationsYou must be signed in to change notification settings

macisamuele/language-formatters-pre-commit-hooks

Repository files navigation

Github Actions CICoveragePyPi versionSupported Python versions

About

This package provides utilities for ensuring that your code is nicely formatted by usingpre-commit hooks

List of pretty-format hooks

  • pretty-format-golang
  • pretty-format-ini
  • pretty-format-java
  • pretty-format-kotlin
  • pretty-format-rust
  • pretty-format-toml⚠️ removes comments under certain conditions
  • pretty-format-yaml

⚠: the list above could be out-of-sync respect the exposed pre-commit hooks.

Please refer to.pre-commit-hooks.yaml for a more updated list.

Example Usage

Add a similar snippet into your.pre-commit-config.yaml file

-repo:https://github.com/macisamuele/language-formatters-pre-commit-hooksrev:${LATEST_SHA_OR_VERSION}hooks:  -id:pretty-format-javaargs:[--autofix]  -id:pretty-format-kotlinargs:[--autofix]  -id:pretty-format-yamlargs:[--autofix, --indent, '2']

Development

This tool uses tox as main tool to build virtual environments.

To get started will be enough to runmake development.

If you haveaactivator installed this step will happen automatically.

Contributing

Contributions arealways welcome.

  1. Fork the project
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Add your modifications
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

FAQ

How to deal with different Google Java Formatter versions?

  -repo:https://github.com/macisamuele/language-formatters-pre-commit-hooksrev:...hooks:      -id:pretty-format-javaargs:[--autofix, --aosp, --google-java-formatter-version=1.16.0]

How to deal with multiple Java versions?

This might be relevant forpretty-format-java andpretty-format-kotlin hooks.The hooks depends on havingjava on version11 or greater installed on your machine.

As you're working withcompiled-to-JVM languages, we assume that you havejava installed on your system. You might not have the minimum required version installed.

To work-around such scenario you have 2 approaches available:

  1. Have multiplejava versions installed on your system and ensure that while running the pre-commit hooks JRE 11+ is available on yourPATH variable (ie.PATH=${JRE_11_PATH}:${PATH} pre-commit run).

  2. Work around the issue by usingdocker.⚠: This approach has been tested (at the time of writing) on Linux and MacOS.

    The latter approach should be preferred if you cannot install an additional JRE version on your system or if doing is unfeasible (e.g. on a CI system). Please note you need to havedocker installed on your system.

    Add the followingDockerfile on your repository root (same directory where.pre-commit-config.yaml is stored)

    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-jreENV PRE_COMMIT_HOME /pre-commit-docker-cacheENV 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}/*

    and the following hook into your.pre-commit-config.yaml file

    repos:-repo:localhooks:  -id:pretty-format-java-in-docker# Useful to eventually SKIP pre-commit hooksname:pretty-format-java-in-docker# This is required, put something sensiblelanguage:docker# Self explanatoryentry:pretty-format-java# Hook that you want to run in dockerargs:[...]# Arguments that would would pass to the hook (as if it was local)files:^.*\.java$# File filter has to be added ;)

    By doing the following, the selected hook (pretty-format-java in the example) will be executed within the docker container.

    Side note: We're not embedding the Dockerfile in the repository as this is more a workaround to support whom cannot of installing a more recent Java version on the library-user system and as such we are not planning to fully support this other than giving possible solutions (Java 11+ was released in September, 2018).

How to use a pre-downloadedgoogle-java-format jar file?

You can pass the jar file path to--google-java-formatter-jar argument:

  -repo:https://github.com/macisamuele/language-formatters-pre-commit-hooksrev:...hooks:      -id:pretty-format-javaargs:[--google-java-formatter-jar=/usr/bin/google-java-format-1.17.0-all-deps.jar]

How to use a pre-downloadedktlint jar file?

You can pass the jar file path to the--ktlint-jar argument:

  -repo:https://github.com/macisamuele/language-formatters-pre-commit-hooksrev:...hooks:      -id:pretty-format-kotlinargs:[--ktlint-jar=/usr/bin/ktlint.jar]

How to use a pre-downloadedktfmt jar file?

You can pass the jar file path to the--ktfmt-jar argument:

  -repo:https://github.com/macisamuele/language-formatters-pre-commit-hooksrev:...hooks:      -id:pretty-format-kotlinargs:[--ktfmt, --ktfmt-jar=/usr/bin/ktfmt-0.47.jar]

How can I verify the checksum of the jar?

Only supported for thepretty-format-java andpretty-format-kotlin-hooks

Use the corresponding[...]-checksum argument

  -repo:https://github.com/macisamuele/language-formatters-pre-commit-hooksrev:...hooks:      -id:pretty-format-javaargs:[--google-java-formatter-version=1.17.0,--formatter-jar-checksum=33068bbbdce1099982ec1171f5e202898eb35f2919cf486141e439fc6e3a4203,]
  -repo:https://github.com/macisamuele/language-formatters-pre-commit-hooksrev:...hooks:      -id:pretty-format-kotlinargs:[--ktlint-version=1.2.1,--formatter-jar-checksum=2e28cf46c27d38076bf63beeba0bdef6a845688d6c5dccd26505ce876094eb92,]
  -repo:https://github.com/macisamuele/language-formatters-pre-commit-hooksrev:...hooks:      -id:pretty-format-kotlinargs:[--ktfmt,--ktfmt-version=0.47,--formatter-jar-checksum=af61161faacd74ac56374e0b43003dbe742ddc0d6a7e2c1fe43e15415e65ffbd,]

How to use ktfmt instead of ktlint?

  -repo:https://github.com/macisamuele/language-formatters-pre-commit-hooksrev:...hooks:      -id:pretty-format-kotlinargs:[--ktfmt, --ktfmt-style=google]

Supported styles are google (default), dropbox and kotlinlang

License

language-formatters-pre-commit-hooks is licensed withApache License version 2.0.

About

Collection of custom pre-commit hooks.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors28


[8]ページ先頭

©2009-2025 Movatter.jp