WIP: Nested nav with reporting on usage #54
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' | |
- '.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 | |
# Check for changed JavaScript files. | |
CHANGED_FILES=$(git diff --name-only origin/main...HEAD | grep -E '\.js$|\.jsx$|\.ts$|\.tsx$' || echo "") | |
# If JavaScript files have changed, run Prettier. | |
if [ -n "$CHANGED_FILES" ]; then | |
echo "Fixing the following files:" | |
echo "$CHANGED_FILES" | |
# Run Prettier on the changed files. | |
echo "$CHANGED_FILES" | xargs npx prettier --write | |
# Join the filenames into a single line with space separation. | |
JOINED_FILES=$(echo $CHANGED_FILES | tr '\n' ' ') | |
echo "CHANGED_FILES=$JOINED_FILES" >> $GITHUB_ENV | |
else | |
echo "No files to format" | |
fi | |
- name: Commit and push Prettier changes | |
env: | |
GH_TOKEN: ${{ github.token }} | |
run: | | |
# Did we make changes when we ran Prettier? | |
if [ -n "$(git status --porcelain)" ]; then | |
git config user.name "Pantheon Bot" | |
git config user.email "bot@getpantheon.com" | |
git add . | |
git commit -m "Apply Prettier formatting" | |
git push origin HEAD:${{ github.head_ref }} | |
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 | |
CURRENT_COMMIT=$(git rev-parse --short HEAD) | |
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 in $CURRENT_COMMIT:\n\n\`${{ env.CHANGED_FILES }}\`\n\nThe full diff is below. Please review the changes.\n\n<details>\n<summary>Click to expand</summary>\n\n\`\`\`diff\n$DIFF_OUTPUT\n\`\`\`\n</details>")" | |
else | |
echo "No Prettier changes" | |
fi |