From 236e81353af020076eedce4a5494ea6f168be6e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CJamesHenry=E2=80=9D?= Date: Mon, 23 Jan 2023 18:46:53 +0400 Subject: [PATCH 1/2] chore: add workflow to automatically run prettier when renovate updates it --- .github/workflows/prettier-update.yml | 46 +++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 .github/workflows/prettier-update.yml diff --git a/.github/workflows/prettier-update.yml b/.github/workflows/prettier-update.yml new file mode 100644 index 000000000000..db95888f3111 --- /dev/null +++ b/.github/workflows/prettier-update.yml @@ -0,0 +1,46 @@ +# This workflow is used to augment the capabilities of the renovate GitHub app by running a full +# `prettier --write` when renovate opens a PR to change the version of prettier. + +name: Prettier Update + +on: + pull_request: + branches: [main] + paths: + - 'package.json' + +concurrency: + group: ${{ github.workflow }}-${{ github.event.number || github.ref }} + cancel-in-progress: true + +jobs: + maybe_prettier_update: + # Only run if it was the renovate bot that triggered the workflow (otherwise we'll create a loop) + if: contains('["renovate[bot]"]', github.actor) == true + name: Run prettier formatting if required + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Check if prettier was changed as part of the latest commit on the PR + id: prettier-package-check + run: | + git diff HEAD~1 -G"prettier" --exit-code package.json && echo "prettier unchanged" || echo "::set-output name=was-changed::true" + + - name: Run prettier formatting if prettier was changed and commit the results + if: ${{ steps.prettier-package-check.outputs.was-changed == 'true' }} + env: + # We cannot use secrets.GITHUB_TOKEN for this because it is not permitted to kick off subsequent actions worfklow runs, so we use a PAT instead + GITHUB_TOKEN: ${{ secrets.JAMES_HENRY_GITHUB_TOKEN }} + run: | + yarn --ignore-scripts + yarn format + + # Commit all the changes to the PR (see note on not being able to use secrets.GITHUB_TOKEN for this) + git config --global user.email "james@henry.sc" + git config --global user.name "JamesHenry" + git remote set-url origin https://x-access-token:$GITHUB_TOKEN@github.com/$GITHUB_REPOSITORY.git + + git add --all + git commit -m "chore: update formatting after prettier upgrade" + git push From ade77076d0383ed1ef7343e547567acb4e73c434 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CJamesHenry=E2=80=9D?= Date: Sun, 4 Jun 2023 19:42:49 +0400 Subject: [PATCH 2/2] chore: only commit when uncommitted changes detected --- .github/workflows/prettier-update.yml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/prettier-update.yml b/.github/workflows/prettier-update.yml index db95888f3111..c90c72151aef 100644 --- a/.github/workflows/prettier-update.yml +++ b/.github/workflows/prettier-update.yml @@ -41,6 +41,11 @@ jobs: git config --global user.name "JamesHenry" git remote set-url origin https://x-access-token:$GITHUB_TOKEN@github.com/$GITHUB_REPOSITORY.git - git add --all - git commit -m "chore: update formatting after prettier upgrade" - git push + # If the status is empty, there are no uncommitted changes + if [[ -z $(git status --porcelain) ]]; then + echo "No uncommitted changes" + else + git add --all + git commit -m "chore: update formatting after prettier upgrade" + git push + fi