rickstaa / action-black

Runs the psf/black formatter to check/format your python code.
https://github.com/marketplace/actions/run-black-formatter
MIT License
38 stars 13 forks source link
black codequality continuous-integration docker formatter gh-action github-actions github-actions-docker python

Action-black GitHub Action

Test release GitHub release (latest SemVer) action-bumpr supported

[!IMPORTANT]\ The official psf/black action has been released! 🚀 - Because of this, this repository's action is no longer trivial. Therefore, you are advised to use the official black action. Some features in this action are not in the official action. The differences between the two actions are documented in https://github.com/rickstaa/action-black/issues/10. If you think features are missing, please open a pull request.

This action runs the black formatter to check/format your python code on a push or pull request. It is similar to reviewdog/action-black that can annotate the black changes required with Reviewdog. However, this version also allows you to format the code using GitHub actions (see #advanced-use-cases).

Quickstart

In it's simplest form this action can be used to check/format your code using the black formatter.

name: black-action
on: [push, pull_request]
jobs:
  linter_name:
    name: runner / black formatter
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: rickstaa/action-black@v1
        with:
          black_args: ". --check"

Inputs

black_args

optional: Black input arguments. Defaults to . --check --diff.

fail_on_error

optional: Exit code when black formatting errors are found [true, false]. Defaults to 'true'.

Outputs

is_formatted

Boolean specifying whether any files were formatted using the black formatter.

Advanced use cases

Annotate changes

This action can be combined with reviewdog/action-suggester also to annotate any possible changes (uses git diff).

name: black-action
on: [push, pull_request]
jobs:
  linter_name:
    name: runner / black
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Check files using the black formatter
        uses: rickstaa/action-black@v1
        id: action_black
        with:
          black_args: "."
      - name: Annotate diff changes using reviewdog
        if: steps.action_black.outputs.is_formatted == 'true'
        uses: reviewdog/action-suggester@v1
        with:
          tool_name: blackfmt

Commit changes or create a pull request

This action can be combined with peter-evans/create-pull-request to also apply the annotated changes to the repository.

name: black-action
on: [push, pull_request]
jobs:
  linter_name:
    name: runner / black
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Check files using the black formatter
        uses: rickstaa/action-black@v1
        id: action_black
        with:
          black_args: "."
      - name: Create Pull Request
        if: steps.action_black.outputs.is_formatted == 'true'
        uses: peter-evans/create-pull-request@v6
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          title: "Format Python code with psf/black push"
          commit-message: ":art: Format Python code with psf/black"
          body: |
            There appear to be some python formatting errors in ${{ github.sha }}. This pull request
            uses the [psf/black](https://github.com/psf/black) formatter to fix these issues.
          base: ${{ github.head_ref }} # Creates pull request onto pull request or commit branch
          branch: actions/black

Contributing

Feel free to open an issue if you have ideas on how to make this GitHub action better or if you want to report a bug! All contributions are welcome. :rocket: Please consult the contribution guidelines for more information.