[![Build Status](https://github.com/pre-commit/action/workflows/deploy/badge.svg)](https://github.com/pre-commit/action/actions) pre-commit/action ================= A GitHub action to run [pre-commit](https://pre-commit.com) ## How to ### Setup To use this action, make a file `.github/workflows/pre-commit.yml`. The following template will get you started: ```yaml name: pre-commit on: pull_request: push: branches: [master] jobs: pre-commit: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 - uses: pre-commit/action@v2.0.0 ``` This does a few things: - Clones the code - Installs python - Sets up the `pre-commit` cache ### With custom invocations By default, this action runs all the hooks against all the files. `extra_args` lets users specify a single hook id and/or options to pass to `pre-commit run`. Here's a sample step configuration that only runs the `flake8` hook against all the files (use the template above except for the `pre-commit` action): ```yaml - uses: pre-commit/action@v2.0.0 with: extra_args: flake8 --all-files ``` ### In private repositories This action also provides an additional behaviour when used in private repositories. When configured with a GitHub token, the action will push back fixes to the pull request branch. Using the template above, you'll need to make two replacements for individual actions: First is the checkout step, which needs to use unlimited fetch depth for pushing: ```yaml - uses: actions/checkout@v2 with: fetch-depth: 0 ``` Next is passing the token to the pre-commit action: ```yaml - uses: pre-commit/action@v2.0.0 with: token: ${{ secrets.GITHUB_TOKEN }} ``` Note that `secrets.GITHUB_TOKEN` is [automatically provisioned](https://docs.github.com/en/free-pro-team@latest/actions/reference/authentication-in-a-workflow#about-the-github_token-secret) and will not require any special configuration. While you could _technically_ configure this for a public repository (using a personal access token), I can't think of a way to do this safely without exposing a privileged token to pull requests – If you have any ideas, please leave an [issue](https://github.com/pre-commit/action/issues)!