diff --git a/.github/workflows/apply-precommit.yml b/.github/workflows/apply-precommit.yml new file mode 100644 index 000000000..44019f6f0 --- /dev/null +++ b/.github/workflows/apply-precommit.yml @@ -0,0 +1,59 @@ +name: Check and Fix Whitespace on Schedule + +on: + schedule: + - cron: '0 0 * * *' + workflow_dispatch: + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: '3.x' + + - name: Install pre-commit + run: pip install pre-commit + + - name: Run pre-commit hooks and apply fixes + id: pre-commit + run: | + # Run pre-commit with auto-fix and ignore exit code + pre-commit run --all-files --hook-stage=manual --show-diff-on-failure || true + # Check if any files were modified + git diff --exit-code || echo "FIX_NEEDED=true" >> $GITHUB_ENV + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Create and push changes if needed + if: env.FIX_NEEDED == 'true' + id: create_branch + run: | + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + # Create a new branch for the changes + BRANCH_NAME="fix/whitespace-$(date +'%Y%m%d%H%M%S')" + git checkout -b "$BRANCH_NAME" + git add . + git commit -m "fix: apply whitespace fixes" + git push origin "$BRANCH_NAME" + echo "branch_name=$BRANCH_NAME" >> $GITHUB_ENV + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Open Pull Request + if: env.FIX_NEEDED == 'true' + uses: repo-sync/pull-request@v2 + with: + source_branch: ${{ env.branch_name }} + destination_branch: ${{ github.ref_name }} + pr_title: "Fix whitespace issues" + pr_body: "This PR automatically applies whitespace fixes." + token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 000000000..7be147642 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,6 @@ +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.4.0 # Use the latest version + hooks: + - id: trailing-whitespace + - id: end-of-file-fixer