Skip to content
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

Add Prettier GitHub workflow #9163

Merged
merged 25 commits into from
Oct 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
d96de69
replace older eslintrc with newer eslint.config.js
jazzsequence Aug 8, 2024
01db848
replace older prettierrc with newer prettier.config.cjs
jazzsequence Aug 8, 2024
c968d31
require eslint
jazzsequence Aug 8, 2024
2d7314b
needs to be a module so we can call the eslint.config.js
jazzsequence Aug 8, 2024
1bf0d63
add a lint script
jazzsequence Aug 8, 2024
2452fda
remove debugging
jazzsequence Aug 8, 2024
e10fd34
add a lint action
jazzsequence Aug 8, 2024
9d40615
remove semi from prettier config
jazzsequence Aug 8, 2024
744a260
remove the eslint line at the end
jazzsequence Aug 8, 2024
f6179d9
update readme
jazzsequence Aug 8, 2024
430b3fe
refactor eslint to prettier action
jazzsequence Aug 14, 2024
97e9f0b
only trigger on workflow dispatch
jazzsequence Aug 15, 2024
4893d9e
update the prettier path
jazzsequence Aug 15, 2024
4718d3b
add fetch depth to checkout
jazzsequence Aug 15, 2024
bff590c
oneline the pr comment
jazzsequence Aug 15, 2024
9540ba0
output the changed files & diff to the github env
jazzsequence Aug 15, 2024
7b2c180
proper diff and fetch main
jazzsequence Aug 15, 2024
feebb3d
simplify path mapping
jazzsequence Aug 15, 2024
728bd2c
update gh action with tweaks from https://github.com/pantheon-systems…
jazzsequence Aug 26, 2024
5f8e55d
Merge branch 'main' into 9082-re-add-prettier
jazzsequence Oct 11, 2024
43fe4da
add some inline docs to the action
jazzsequence Oct 11, 2024
2943260
readme copy changes
jazzsequence Oct 11, 2024
775c1bd
remove plugin-prettier
jazzsequence Oct 11, 2024
27dd390
update package-lock
jazzsequence Oct 11, 2024
6b3174a
Update README.md
stevector Oct 11, 2024
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
7 changes: 0 additions & 7 deletions .eslintrc

This file was deleted.

80 changes: 80 additions & 0 deletions .github/workflows/prettier.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
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
7 changes: 0 additions & 7 deletions .prettierrc

This file was deleted.

14 changes: 14 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,20 @@ lando start

You can view the local environment at `localhost:8000/`. Updates to docs are automatically refreshed in the browser.

## Linting and Code Formatting
We use ESLint and Prettier to enforce code style. On each pull request to the repository, if any `.js`, `.jsx`, `.ts` or `.tsx` files are modified in the `/src` directory, We run Prettier to check for code styling issues on the updated/changed files. If Prettier made any changes, those changes are automatically committed back to the PR (see [example PR](https://github.com/pantheon-systems/documentation/pull/9180#issuecomment-2292403319)).

To check for linting issues locally, run:
```bash
npm run lint
```

To automatically fix formatting issues across the entire `/src` directory, run:
```bash
npm run format
```
Be cautious when running this command, as it will automatically fix any formatting issues it can.

## Testing

We include several tools to test that new content doesn't break the documentation. Most of these tests are performed automatically by our continuous integration service, but pull requests created from external contributors aren't included in CI tests. If you want to manually test your branch, you can execute the following tests within the Docker container.
Expand Down
27 changes: 27 additions & 0 deletions eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import { FlatCompat } from '@eslint/eslintrc';
import js from '@eslint/js';
import prettier from 'eslint-config-prettier';

const compat = new FlatCompat({
baseDirectory: process.cwd(),
recommendedConfig: js.configs.recommended,
});

export default [
{
ignores: ['node_modules/**'],
},
...compat.config({
extends: ['plugin:prettier/recommended'],
plugins: ['prettier'],
rules: {
'prettier/prettier': 'error',
},
globals: {
MktoForms2: 'readonly',
jQuery: 'readonly',
$: 'readonly',
},
}),
prettier,
];
Loading
Loading