Skip to main content

No project description provided

Project description

Update-Pre-Commit

CI Code Coverage

😎 Why you need update-pre-commit?

If you are already using pre-commit or you are planning to use pre-commit to detect issues before code check-in and reduce the burden on code reviewers, update-pre-commit can compliment pre-commit.

update-pre-commit reads your project's pre-commit configuration file (.pre-commit-config.yaml), makes GitHub API call to get the latest update on each of the pre-commit hooks, and creates a pull request on GitHub. You can use our action (coming soon) to run update-pre-commit and keep your pre-commit configuration up to date.


🪜 Prerequisites

* Python (3.12+)
  □ install update-pre-commit.

* GitHub
  □ create a fine-grained token with repository permissions (see below).

GitHub Token Permission


🔆 Install update-pre-commit

We use a GitHub project named hello-world in the command-line examples below. This project has pre-commit installed and a valid .pre-commit-config.yaml.

We will first install update-pre-commit in a virtual environment named after the project. Next, we will show the results of running update-pre-commit with different options.

~/work/hello-world $ workon hello-world
(hello-world) ~/work/hello-world $ export GH_TOKEN=github_pat_xxxxxxxxxxxxx
(hello-world) ~/work/hello-world $ pip install -U update-pre-commit

🔍 Using update-pre-commit

🏃 Run to show command line usage and options: --help

(hello-world) ~/work/hello-world $ update-pre-commit --help

Usage: update-pre-commit [OPTIONS]

Options:
  --file TEXT        <file> (default: .pre-commit-config.yaml).
  --dry-run BOOLEAN  <true, false> (default: true).
  --version          Show the version and exit.
  --help             Show this message and exit.

🏃 Run to show version: --version

(hello-world) ~/work/hello-world $ update-pre-commit --version
update-pre-commit, version 1.0.0

🏃 Run to produce a list of out-of-date hooks: --dry-run true

The option --dry-run true is run by default and does the following:

  1. read the .pre-commit-config.yaml.
  2. produce a list of out-of-date pre-commit hooks.
(hello-world) ~/work/hello-world $ update-pre-commit

Starting update-pre-commit on .pre-commit-config.yaml (dry-run True)...

hadolint/hadolint (v2.11.0) is not using the latest release rev (v2.12.0)
pycqa/flake8 (7.1.2) is not using the latest release tag (7.2.0)
antonbabenko/pre-commit-terraform (v1.98.0) is not using the latest release rev (v1.98.1)

Update revs in .pre-commit-config.yaml: None

🏃 Run to produce a list of out-of-date hooks and a PR: --dry-run false

The option --dry-run false does the following:

  1. read the .pre-commit-config.yaml.
  2. produce a list of out-of-date pre-commit hooks.
  3. checkout a new git branch update_pre_commit_XXXXXXXXXXXXXXXXXXXXX.
  4. update hooks rev inside .pre-commit-config.yaml.
  5. create a pull request against repository default branch.
(hello-world) ~/work/hello-world $ update-pre-commit --dry-run false

Starting update-pre-commit on .pre-commit-config.yaml (dry-run False)...

hadolint/hadolint (v2.11.0) is not using the latest release rev (v2.12.0)
pycqa/flake8 (7.1.2) is not using the latest release tag (7.2.0)
antonbabenko/pre-commit-terraform (v1.98.0) is not using the latest release rev (v1.99.0)

Update revs in .pre-commit-config.yaml: Success

Checkout new branch successfully....

Push commits successfully:
from local branch: update_pre_commit_01JV8P09N4G5K9Q4DDD533ARBH
with commit hash : 7b293faf5e14f6950bf28b510eb8d8c8beff26fe

Creating a Pull Request as follows:
Owner/Repo.  : tagdots/hello-world
Title        : update pre-commit-config
Source Branch: tagdots:update_pre_commit_01JV8P09N4G5K9Q4DDD533ARBH
PR for Branch: main
Rev Variances: [{"owner_repo": "antonbabenko/pre-commit-terraform", "current_rev": "v1.98.1", "new_rev": "v1.99.0"}, {"owner_repo": "adrienverge/yamllint", "current_rev": "v1.37.0", "new_rev": "v1.37.1"}]

Created pull request #101 successfully: https://github.com/tagdots/hello-world/pull/101

😕 Troubleshooting

Step 1 - Ensure the following

* your project's .pre-commit-config.yaml file is valid.
* your GitHub fine-grained token has the write permissions to contents and pull requests.
* update-pre-commit can find the .pre-commit-config.yaml file at the root of YOUR project.

Step 2 - Open an issue


🙏 Contributing

Pull requests and stars are always welcome. For pull requests to be accepted on this project, you should follow PEP8 when creating/updating Python codes.

See Contributing


📚 References

Pre-Commit on Github

How to fork a repo

Manage Github Token


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

update_pre_commit-1.0.0.tar.gz (10.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

update_pre_commit-1.0.0-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

File details

Details for the file update_pre_commit-1.0.0.tar.gz.

File metadata

  • Download URL: update_pre_commit-1.0.0.tar.gz
  • Upload date:
  • Size: 10.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for update_pre_commit-1.0.0.tar.gz
Algorithm Hash digest
SHA256 85dd52ea8dcbe84f07d5ca9bc5839ec1ef71c67f7070ce504e707421240195b0
MD5 029f1d8201f1927c9c7959cc8d8af5cd
BLAKE2b-256 df6e0349e18bf34af82ee8c22701269f34420f71e5032223a3c827aad406326f

See more details on using hashes here.

File details

Details for the file update_pre_commit-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for update_pre_commit-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 45b53dcbeddb148e8d397119ea8f578dfe8817a05aaed21bad57f81c24bf6234
MD5 ea151f2bfcdb7b5d9499fe8c07be27c5
BLAKE2b-256 024aea2d2eb55d58a185e6cd840fa5da901140994e42409d2109bec6dd214070

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page