Skip to content

Add Prettier GitHub workflow #4

Add Prettier GitHub workflow

Add Prettier GitHub workflow #4

Workflow file for this run

name: Prettier
on:
pull_request:
paths:
- 'src/**/*.{js,jsx,ts,tsx}'
- '.github/workflows/prettier.yml'
types:
- opened
- synchronize
- reopened
- ready_for_review
workflow_dispatch:
permissions:
contents: write
pull-requests: write
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-node@v4
with:
node-version: 'latest'
- name: Install Node dependencies
run: npm ci
- name: Run Prettier on changed files
env:
GH_TOKEN: ${{ github.token }}
run: |
git fetch origin main
CHANGED_FILES=$(git diff --name-only origin/main...HEAD | grep -E '\.js$|\.jsx$|\.ts$|\.tsx$' || echo "")
if [ -n "$CHANGED_FILES" ]; then
echo "Fixing the following files:"
echo "$CHANGED_FILES"
echo "$CHANGED_FILES" | xargs npx prettier --write
echo "CHANGED_FILES=$CHANGED_FILES" >> $GITHUB_ENV
else
echo "No files to format"
fi
- name: Commit and push Prettier changes
env:
GH_TOKEN: ${{ github.token }}
run: |
# Check for changes.
if [ -n "$(git status --porcelain)" ]; then
git config user.name "Pantheon Bot"
git config user.email "[email protected]"
git add .
git commit -m "Apply Prettier formatting"
git push
DIFF_OUTPUT=$(git diff HEAD~1 HEAD)
echo "DIFF_OUTPUT<<EOF" >> $GITHUB_ENV
echo "$DIFF_OUTPUT" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
else
echo "No changes to commit"
fi
- name: Set Prettier diff output
env:
GH_TOKEN: ${{ github.token }}
run: |
if [ -n "${{ env.DIFF_OUTPUT }}" ]; then
gh pr comment ${{ github.event.pull_request.number }} --body "$(echo -e "Hi from your friendly robot! 🤖\n\nI've applied Prettier formatting to the following files:\n\n${{ env.CHANGED_FILES }}\n\nThe full diff is below:\n\n<details>\n<summary>Click to expand</summary>\n\n\`\`\`diff\n$DIFF_OUTPUT\n\`\`\`\n</details>")"
else
echo "No Prettier changes"
fi