Skip to content

Commit 7a54d1c

Browse files
authored
Update spelling.yml
1 parent 699cb87 commit 7a54d1c

File tree

1 file changed

+30
-84
lines changed

1 file changed

+30
-84
lines changed

.github/workflows/spelling.yml

Lines changed: 30 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,12 @@ jobs:
1010
pyspelling:
1111
runs-on: ubuntu-20.04
1212
steps:
13-
- name: Check for skip label and get changed files
14-
id: check-files
13+
- uses: actions/checkout@v4
14+
with:
15+
fetch-depth: 0
16+
17+
- name: Get changed files and check for skip label
18+
id: changes
1519
uses: actions/github-script@v6
1620
with:
1721
script: |
@@ -21,123 +25,65 @@ jobs:
2125
if (context.eventName === 'pull_request') {
2226
// Check for skip label
2327
const { data: labels } = await github.rest.issues.listLabelsOnIssue({
24-
owner: context.repo.owner,
25-
repo: context.repo.repo,
28+
...context.repo,
2629
issue_number: context.issue.number
2730
});
2831
skipCheck = labels.some(label => label.name === 'skip-spell-check');
2932
3033
if (!skipCheck) {
31-
// Get changed files in PR
3234
const { data: files } = await github.rest.pulls.listFiles({
33-
owner: context.repo.owner,
34-
repo: context.repo.repo,
35+
...context.repo,
3536
pull_number: context.issue.number
3637
});
37-
3838
changedFiles = files
3939
.filter(file => file.filename.match(/\.(py|rst|md)$/))
4040
.map(file => file.filename);
4141
}
4242
} else {
43-
// For push events, we'll still need to use git diff
44-
// We'll handle this after checkout
43+
// For push events
44+
const exec = require('child_process').execSync;
45+
changedFiles = exec('git diff --name-only HEAD^..HEAD -- "*.py" "*.rst" "*.md"')
46+
.toString()
47+
.trim()
48+
.split('\n')
49+
.filter(Boolean);
4550
}
4651
47-
core.setOutput('skip', skipCheck.toString());
52+
const shouldRun = !skipCheck && changedFiles.length > 0;
53+
54+
core.setOutput('should-run', shouldRun);
4855
core.setOutput('files', changedFiles.join('\n'));
49-
core.setOutput('is-pr', (context.eventName === 'pull_request').toString());
50-
51-
- uses: actions/checkout@v4
52-
if: steps.check-files.outputs.skip != 'true'
53-
with:
54-
fetch-depth: 0
55-
56-
- name: Get changed files for push event
57-
if: |
58-
steps.check-files.outputs.skip != 'true' &&
59-
steps.check-files.outputs.is-pr != 'true'
60-
id: push-files
61-
run: |
62-
CHANGED_FILES=$(git diff --name-only HEAD^..HEAD -- '*.py' '*.rst' '*.md')
63-
echo "files<<EOF" >> $GITHUB_OUTPUT
64-
echo "$CHANGED_FILES" >> $GITHUB_OUTPUT
65-
echo "EOF" >> $GITHUB_OUTPUT
66-
67-
- name: Check if relevant files changed
68-
if: steps.check-files.outputs.skip != 'true'
69-
id: check
70-
run: |
71-
if [ "${{ steps.check-files.outputs.is-pr }}" == "true" ]; then
72-
FILES="${{ steps.check-files.outputs.files }}"
73-
else
74-
FILES="${{ steps.push-files.outputs.files }}"
75-
fi
76-
77-
if [ -z "$FILES" ]; then
78-
echo "skip=true" >> $GITHUB_OUTPUT
79-
echo "No relevant files changed (*.py, *.rst, *.md), skipping spell check"
80-
else
81-
echo "skip=false" >> $GITHUB_OUTPUT
82-
echo "Found changed files to check:"
83-
echo "$FILES"
84-
fi
8556
8657
- uses: actions/setup-python@v4
87-
if: |
88-
steps.check-files.outputs.skip != 'true' &&
89-
steps.check.outputs.skip != 'true'
58+
if: steps.changes.outputs.should-run == 'true'
9059
with:
9160
python-version: '3.9'
9261
cache: 'pip'
9362

9463
- name: Install dependencies
95-
if: |
96-
steps.check-files.outputs.skip != 'true' &&
97-
steps.check.outputs.skip != 'true'
64+
if: steps.changes.outputs.should-run == 'true'
9865
run: |
9966
pip install pyspelling
10067
sudo apt-get install aspell aspell-en
10168
102-
- name: Run spell check on each file
103-
if: |
104-
steps.check-files.outputs.skip != 'true' &&
105-
steps.check.outputs.skip != 'true'
69+
- name: Run spell check
70+
if: steps.changes.outputs.should-run == 'true'
10671
run: |
107-
# Get the list of files into an array
108-
if [ "${{ steps.check-files.outputs.is-pr }}" == "true" ]; then
109-
mapfile -t FILES <<< "${{ steps.check-files.outputs.files }}"
110-
else
111-
mapfile -t FILES <<< "${{ steps.push-files.outputs.files }}"
112-
fi
72+
# Get the list of files
73+
mapfile -t FILES <<< "${{ steps.changes.outputs.files }}"
11374
114-
# Check each file individually
115-
FINAL_EXIT_CODE=0
75+
# Check each file
11676
for file in "${FILES[@]}"; do
117-
if [ -n "$file" ]; then
118-
echo "Checking spelling in $file"
119-
# Create a temporary config file based on the existing one
120-
python3 - <<EOF > temp_config.yml
77+
echo "Checking spelling in $file"
78+
python3 - <<EOF > temp_config.yml
12179
import yaml
122-
12380
with open('.pyspelling.yml', 'r') as f:
12481
config = yaml.safe_load(f)
125-
126-
# Modify only the sources in each matrix entry
12782
for matrix in config['matrix']:
12883
matrix['sources'] = ['$file']
129-
13084
with open('temp_config.yml', 'w') as f:
131-
yaml.dump(config, f, default_flow_style=False)
85+
yaml.dump(config, f)
13286
EOF
133-
134-
if ! pyspelling -c temp_config.yml; then
135-
FINAL_EXIT_CODE=1
136-
fi
137-
fi
87+
88+
pyspelling -c temp_config.yml || exit 1
13889
done
139-
140-
if [ $FINAL_EXIT_CODE -ne 0 ]; then
141-
echo "Spell check failed!"
142-
exit 1
143-
fi

0 commit comments

Comments
 (0)