Simple CLI tool to check and update pre-commit hooks.
Project description
pre-commit-update
Table of contents
1. Reasoning
pre-commit is a nice little tool that helps you polish your code before releasing it into the wild.
It is fairly easy to use. A single pre-commit-config.yaml file can hold multiple hooks (checks) that will go through
your code or repository and do certain checks. The problem is that the file is static and once you pin your hook versions
after a while they get outdated.
pre-commit-update was created because there is no easy way to update your hooks by using
pre-commit autoupdate as it is not versatile enough.
2. Features
| Feature | pre-commit-update | pre-commit autoupdate |
|---|---|---|
| Dry run (checks for updates, does not update) | Yes | No |
| Stable versions only | Yes | No |
| Exclude repo(s) from update check | Yes | Workaround (updates only specified repo(s)) |
| Keep repo(s) (checks for updates, does not update) | Yes | No |
| Update by hash instead of tag | Yes | Yes |
| Can be used as a pre-commit hook | Yes | No |
Can be configured in pyproject.toml |
Yes | No |
3. Installation
pre-commit-update is available on PyPI:
$ python -m pip install pre-commit-update
Python >= 3.8 is supported.
NOTE: Please make sure that git is installed.
4. Usage
pre-commit-update CLI can be used as below:
Usage: pre-commit-update [OPTIONS]
Options:
-d, --dry-run / -nd, --no-dry-run Dry run only checks for the new versions without updating [default: nd]
-a, --all-versions / -na, --no-all-versions Include the alpha/beta versions when updating [default: na]
-v, --verbose / -nv, --no-verbose Display the complete output [default: nv]
-e, --exclude REPO_URL_TRIM Exclude specific repo(s) by the `repo` url trim
-k, --keep REPO_URL_TRIM Keep the version of specific repo(s) by the `repo` url trim (still checks for the new versions)
-h, --help Show this message and exit.
If you want to just check for updates (without updating pre-commit-config.yaml), for example, you would use:
$ pre-commit-update -d
or
$ pre-commit-update --dry-run
NOTE: If you are to use the exclude or keep options, please pass the repo url trim as a parameter.
Keep in mind that if you have multiple hooks (id's) configured for a single repo and you exclude that repo,
NONE of the hooks will be updated, whole repo will be excluded.
Example of repo url trim: https://github.com/ambv/black -> black (you will only pass black as a parameter to
exclude or keep)
1) Pipeline usage example
a) GitLab job:
pre-commit-hooks-update:
stage: update
script:
# install git if not present in the image
- pip install pre-commit-update
- pre-commit-update --dry-run
except:
- main
when: manual
allow_failure: true
NOTE: This is just an example, feel free to do your own configuration
2) pre-commit hook usage example
You can also use pre-commit-update as a hook in your pre-commit hooks:
- repo: https://gitlab.com/vojko.pribudic/pre-commit-update
rev: v0.3.0 # Insert the latest tag here
hooks:
- id: pre-commit-update
args: [--dry-run, --exclude, black, --keep, isort]
3) pyproject.toml usage example
You can configure pre-commit-update in your pyproject.toml as below (feel free to do your own configuration):
[tool.pre-commit-update]
dry_run = true
all_versions = false
verbose = true
exclude = ["isort"]
keep = ["black"]
NOTE: If some of the options are missing (for example exclude option), pre-commit-update
will use default value for that option (default for exclude option would be an empty list).
IMPORTANT If you invoke pre-commit-update with any arguments (e.g. pre-commit-update -d),
pyproject.toml configuration will be overridden. This means that all the arguments passed while
calling pre-commit-update will have priority over configuration defined inside pyproject.toml.
If you want to override boolean flags, you can do so by passing the negative flag value.
For example, given the configuration above, to override verbose flag from pyproject.toml, you
would invoke pre-commit-update with either --no-verbose or -nv.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pre_commit_update-0.3.0.tar.gz.
File metadata
- Download URL: pre_commit_update-0.3.0.tar.gz
- Upload date:
- Size: 11.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.12.2 Linux/6.8.5-1-MANJARO
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d81b5f68bbd2893dab114248efc402340812194a2984286d11c410a2059cf652
|
|
| MD5 |
15daa06e44d587be6a501086b5504c97
|
|
| BLAKE2b-256 |
f85b95a9116cfa9de6fa9eab2f6489db318eeda4b867a9648bf6f0cc8af2dc58
|
File details
Details for the file pre_commit_update-0.3.0-py3-none-any.whl.
File metadata
- Download URL: pre_commit_update-0.3.0-py3-none-any.whl
- Upload date:
- Size: 14.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.12.2 Linux/6.8.5-1-MANJARO
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
80c452332252a04b9aab6feb4c81cafb4dfb8dc5d02337890e0b6f215712e7e3
|
|
| MD5 |
cdb7f9e8a1467d0327c26dd189015144
|
|
| BLAKE2b-256 |
7221dca654f6687545868f33401d096973438feb1c47f058d5c6bb37a1d7a4e4
|