Skip to content

chore: add workflow to automatically run prettier when renovate updates it #6370

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jun 4, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 51 additions & 0 deletions .github/workflows/prettier-update.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# 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
Comment on lines +36 to +37
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For a bit faster install, maybe?

Suggested change
yarn --ignore-scripts
yarn format
npx prettier --write .

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

will npx respect the package.json version of prettier?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It goes with the latest by default, which should be what the PR is upgrading to anyway.


# 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

# 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