Skip to content

Commit 1d4b4d1

Browse files
committed
add
1 parent d0017d8 commit 1d4b4d1

File tree

1 file changed

+113
-7
lines changed

1 file changed

+113
-7
lines changed

.github/workflows/vale.yml

+113-7
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,124 @@
1-
name: Reviewdog with Vale
1+
name: Lint and Suggest
22

3-
on: [pull_request]
3+
on:
4+
pull_request:
5+
paths:
6+
- '**/*.md'
7+
8+
permissions:
9+
contents: read
10+
pull-requests: write
411

512
jobs:
6-
reviewdog:
13+
vale:
714
runs-on: ubuntu-latest
15+
816
steps:
9-
- name: Check out code
10-
uses: actions/checkout@v2
17+
- name: Checkout code
18+
uses: actions/checkout@v3
19+
with:
20+
fetch-depth: 0
1121

1222
- name: Install Vale
1323
uses: errata-ai/vale-action@v2
1424
with:
1525
version: latest
1626

17-
- name: Run Vale
18-
run: vale --output=line .
27+
- name: Install jq
28+
run: sudo apt-get install -y jq
29+
30+
- name: Get changed files
31+
id: changed-files
32+
run: |
33+
BASE_SHA=$(git merge-base origin/${{ github.event.pull_request.base.ref }} ${{ github.sha }})
34+
CHANGED_FILES=$(git diff --name-only $BASE_SHA ${{ github.sha }} -- '*.md')
35+
echo "CHANGED_FILES=$CHANGED_FILES" >> $GITHUB_ENV
36+
echo "::set-output name=files::$(echo $CHANGED_FILES | jq -R -s -c 'split(\"\\n\")[:-1]')"
37+
38+
- name: Print Changed Files
39+
run: echo $CHANGED_FILES
40+
41+
- name: Run Vale on changed files
42+
run: |
43+
for file in $(echo ${{ steps.changed-files.outputs.files }} | jq -r '.[]'); do
44+
echo "Running Vale on $file"
45+
vale --output=JSON $file > "vale_output_${file//\//_}.json"
46+
done
47+
echo "Vale outputs:"
48+
ls -l
49+
50+
- name: Apply Vale edits and save originals
51+
run: |
52+
mkdir -p original_files
53+
mkdir -p corrected_files
54+
for file in $(echo ${{ steps.changed-files.outputs.files }} | jq -r '.[]'); do
55+
echo "Copying $file to original_files/${file//\//_}.original"
56+
cp "$file" "original_files/${file//\//_}.original"
57+
echo "Copying vale_output_${file//\//_}_edit.md to corrected_files/${file//\//_}"
58+
cp "vale_output_${file//\//_}_edit.md" "corrected_files/${file//\//_}"
59+
done
60+
echo "Original files:"
61+
ls -l original_files
62+
echo "Corrected files:"
63+
ls -l corrected_files
64+
65+
- name: Upload original files
66+
uses: actions/upload-artifact@v3
67+
with:
68+
name: original-files
69+
path: original_files/
70+
71+
- name: Upload corrected files
72+
uses: actions/upload-artifact@v3
73+
with:
74+
name: corrected-files
75+
path: corrected_files/
76+
77+
suggest:
78+
runs-on: ubuntu-latest
79+
needs: vale # This ensures the suggest job runs after the vale job
80+
81+
steps:
82+
- name: Checkout code
83+
uses: actions/checkout@v3
84+
85+
- name: Download original files
86+
uses: actions/download-artifact@v3
87+
with:
88+
name: original-files
89+
90+
- name: Download corrected files
91+
uses: actions/download-artifact@v3
92+
with:
93+
name: corrected-files
94+
95+
- name: List downloaded files
96+
run: |
97+
echo "Original files:"
98+
ls -l original_files
99+
echo "Corrected files:"
100+
ls -l corrected_files
101+
102+
- name: Run Reviewdog Suggestion Action
103+
uses: reviewdog/action-suggester@v1
104+
with:
105+
github_token: ${{ secrets.REVIEWDOG_GITHUB_API_TOKEN }}
106+
tool_name: Vale
107+
level: "warning"
108+
filter_mode: "diff_context"
109+
fail_on_error: "false"
110+
reviewdog_flags: ""
111+
cleanup: "true"
112+
113+
- name: Run Reviewdog with corrected files
114+
run: |
115+
for file in original_files/*.original; do
116+
original="$file"
117+
corrected="corrected_files/$(basename "$file" .original)"
118+
diff_output=$(diff -u "$original" "$corrected")
119+
if [[ -n "$diff_output" ]]; then
120+
echo "$diff_output" | reviewdog -f=diff -name="Vale" -reporter=github-pr-review -level=warning -filter-mode=nofilter
121+
fi
122+
done
123+
env:
124+
REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.REVIEWDOG_GITHUB_API_TOKEN }}

0 commit comments

Comments
 (0)