Add Prettier GitHub workflow #4
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |