From c36eba493ebb07a8785d78461b1b6fc5cfd637d0 Mon Sep 17 00:00:00 2001 From: George Taylor Date: Wed, 18 Sep 2024 00:47:20 +0100 Subject: [PATCH] :wrench: Implement Ruff as check instead of Black creating a commit --- .github/workflows/format-python.yml | 66 +++++++++++++++++++++++------ 1 file changed, 52 insertions(+), 14 deletions(-) diff --git a/.github/workflows/format-python.yml b/.github/workflows/format-python.yml index f5f84e1..33428ce 100644 --- a/.github/workflows/format-python.yml +++ b/.github/workflows/format-python.yml @@ -1,23 +1,61 @@ -name: Format Python +name: Ensure formatted code on: pull_request: types: [ opened, edited, reopened, synchronize, ready_for_review ] workflow_dispatch: + +permissions: + contents: read + pull-requests: write + jobs: - format: + format_check: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - with: - repository: ${{ github.event.pull_request.head.repo.full_name }} - ref: ${{ github.event.pull_request.head.ref }} - - name: Format code with black + - name: Install ruff + run: pip install ruff + - name: Check formatting for Python code + env: + GH_TOKEN: ${{ github.token }} run: | - pip install black - black --line-length 120 . - - name: Commit changes - uses: EndBug/add-and-commit@v9 - with: - default_author: github_actions - message: "Formatted code with black --line-length 120" - add: "." + set +e + format_output=$(ruff format --check) + exit_code=$? + if [ $exit_code -eq 0 ]; then + echo "All Python code is properly formatted." + gh pr comment ${{ github.event.pull_request.number }} --body "All Python code is properly formatted." + else + echo "$format_output" + echo "Errors:" > format_output.txt + echo '```' >> format_output.txt + echo "$format_output" >> format_output.txt + echo '```' >> format_output.txt + echo "Some Python code is not properly formatted." >> format_output.txt + echo "Please run 'ruff format' to format the code." >> format_output.txt + gh pr comment ${{ github.event.pull_request.number }} --bodyfile format_output.txt + exit 1 + fi + # lint: + # runs-on: ubuntu-latest + # steps: + # - uses: actions/checkout@v4 + # - name: Install ruff + # run: pip install ruff + # - name: Lint Python code + # env: + # GH_TOKEN: ${{ github.token }} + # run: | + # set +e + # check_output=$(ruff check) + # exit_code=$? + # if [ $exit_code -eq 0 ]; then + # echo "All Python code is properly formatted." + # gh pr comment ${{ github.event.pull_request.number }} --body "No linting errors found." + # else + # echo "$check_output" > check_output.txt + # echo "Some Python code has linting errors." >> check_output.txt + # echo "Please run 'ruff check --fix' to fix the errors." >> check_output.txt + # gh pr comment ${{ github.event.pull_request.number }} --body "```\n$(cat check_output.txt)\n```" + # exit 1 + # fi