Skip to content

Commit 212dfce

Browse files
committed
add
1 parent dc6a399 commit 212dfce

File tree

1 file changed

+116
-31
lines changed

1 file changed

+116
-31
lines changed

.github/workflows/vale.yml

Lines changed: 116 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,126 @@
1-
name: Vale Linting and Suggestions
1+
name: Lint and suggest
22

33
on:
44
pull_request:
55
paths:
66
- '**/*.md'
77

88
jobs:
9-
vale-lint:
9+
vale:
1010
runs-on: ubuntu-latest
1111

1212
steps:
13-
- name: Checkout code
14-
uses: actions/checkout@v2
15-
16-
- name: Set up Vale
17-
run: |
18-
curl -sfL https://install.goreleaser.com/github.com/errata-ai/vale.sh | sh -s -- -b $HOME/.local/bin
19-
echo "$HOME/.local/bin" >> $GITHUB_PATH
20-
21-
- name: Run Vale
22-
run: |
23-
vale --output=JSON . > vale_output.json
24-
25-
- name: Install jq
26-
run: sudo apt-get install -y jq
27-
28-
- name: Process Vale Output for Reviewdog
29-
run: |
30-
jq -c '.[] | {file: .Path, line: .Line, column: .Span[0], message: .Message, suggestion: .Suggestions[0], severity: .Severity}' vale_output.json > rdjson_output.jsonl
31-
32-
- name: Reviewdog - Report results and Suggest changes
33-
uses: reviewdog/action-suggester@v1
34-
with:
35-
tool_name: vale
36-
level: warning
37-
reporter: github-pr-review
38-
filter_mode: added
39-
fail_on_error: true
40-
input_file: rdjson_output.jsonl
41-
github_token: ${{ secrets.REVIEWDOG_GITHUB_API_TOKEN }}
13+
- name: Checkout code
14+
uses: actions/checkout@v3
15+
with:
16+
fetch-depth: 0
17+
18+
- name: Install Vale
19+
uses: errata-ai/vale-action@v2
20+
21+
- name: Install jq
22+
run: sudo apt-get install -y jq
23+
24+
- name: Get changed files
25+
id: changed-files
26+
run: |
27+
BASE_SHA=$(git merge-base origin/${{ github.event.pull_request.base.ref }} ${{ github.sha }})
28+
CHANGED_FILES=$(git diff --name-only $BASE_SHA ${{ github.sha }} -- '*.md')
29+
echo "CHANGED_FILES=$CHANGED_FILES" >> $GITHUB_ENV
30+
echo "::set-output name=files::$(echo $CHANGED_FILES | jq -R -s -c 'split(\"\n\")[:-1]')"
31+
32+
- name: Print Changed Files
33+
run: echo $CHANGED_FILES
34+
35+
- name: Run Vale on changed files
36+
run: |
37+
for file in $(echo ${{ steps.changed-files.outputs.files }} | jq -r '.[]'); do
38+
echo "Running Vale on $file"
39+
vale --output=JSON $file > "vale_output_${file//\//_}.json"
40+
vale --output=edit $file > "vale_output_${file//\//_}_edit.md"
41+
done
42+
echo "Vale outputs:"
43+
ls -l
44+
45+
- name: Apply Vale edits and save originals
46+
run: |
47+
mkdir -p original_files
48+
mkdir -p corrected_files
49+
for file in $(echo ${{ steps.changed-files.outputs.files }} | jq -r '.[]'); do
50+
echo "Copying $file to original_files/${file//\//_}.original"
51+
cp "$file" "original_files/${file//\//_}.original"
52+
echo "Copying vale_output_${file//\//_}_edit.md to corrected_files/${file//\//_}"
53+
cp "vale_output_${file//\//_}_edit.md" "corrected_files/${file//\//_}"
54+
done
55+
echo "Original files:"
56+
ls -l original_files
57+
echo "Corrected files:"
58+
ls -l corrected_files
59+
env:
60+
REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.REVIEWDOG_GITHUB_API_TOKEN }}
61+
62+
- name: Upload original files
63+
uses: actions/upload-artifact@v3
64+
with:
65+
name: original-files
66+
path: original_files/
67+
68+
- name: Upload corrected files
69+
uses: actions/upload-artifact@v3
70+
with:
71+
name: corrected-files
72+
path: corrected_files/
73+
74+
suggest:
75+
runs-on: ubuntu-latest
76+
needs: vale
77+
78+
steps:
79+
- name: Checkout code
80+
uses: actions/checkout@v3
81+
82+
- name: Download original files
83+
uses: actions/download-artifact@v3
84+
with:
85+
name: original-files
86+
87+
- name: Download corrected files
88+
uses: actions/download-artifact@v3
89+
with:
90+
name: corrected-files
91+
92+
- name: List downloaded files
93+
run: |
94+
echo "Original files:"
95+
ls -l original_files
96+
echo "Corrected files:"
97+
ls -l corrected_files
98+
99+
- name: Run Reviewdog Suggestion Action
100+
uses: reviewdog/action-suggester@v1
101+
with:
102+
github_token: ${{ secrets.REVIEWDOG_GITHUB_API_TOKEN }}
103+
tool_name: Vale
104+
level: "warning"
105+
filter_mode: "diff_context"
106+
fail_on_error: "false"
107+
reviewdog_flags: ""
108+
cleanup: "true"
109+
110+
- name: Run Reviewdog with corrected files
111+
run: |
112+
mkdir -p temp_diff
113+
for file in original_files/*.original; do
114+
original="$file"
115+
corrected="corrected_files/$(basename "$file" .original)"
116+
diff_output=$(diff -u "$original" "$corrected")
117+
if [[ -n "$diff_output" ]]; then
118+
echo "$diff_output" > "temp_diff/$(basename "$file" .original).diff"
119+
fi
120+
done
121+
ls temp_diff/
122+
for diff_file in temp_diff/*.diff; do
123+
reviewdog -f=diff -name="Vale" -reporter=github-pr-review -level=warning -filter-mode=nofilter < "$diff_file"
124+
done
125+
env:
126+
REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.REVIEWDOG_GITHUB_API_TOKEN }}

0 commit comments

Comments
 (0)