@@ -12,22 +12,28 @@ jobs:
1212 runs-on : ubuntu-latest
1313
1414 steps :
15- - name : Checkout Repository
15+ - name : Checkout Repo
1616 uses : actions/checkout@v4
1717 with :
1818 fetch-depth : 0
1919
20- # === PR MODE ===
20+ - name : Mirror Repo to sanitized_md/
21+ run : |
22+ rsync -av --exclude '.git' --exclude 'node_modules' ./ sanitized_md/
23+
24+ # ‣ PR: get only changed .md files
2125 - name : Get Changed Markdown Files (PR)
2226 id : changed-files
2327 if : github.event_name == 'pull_request'
2428 run : |
2529 git fetch origin ${{ github.base_ref }}
26- files=$(git diff --name-only origin/${{ github.base_ref }}...HEAD | grep '\.md$' || true)
30+ files=$(git diff --name-only origin/${{ github.base_ref }}...HEAD \
31+ | grep '\.md$' || true)
2732 echo "md_files<<EOF" >> $GITHUB_OUTPUT
2833 echo "$files" >> $GITHUB_OUTPUT
2934 echo "EOF" >> $GITHUB_OUTPUT
3035
36+ # ‣ PR: initial Lychee run
3137 - name : Initial Lychee Check on Changed Files (PR)
3238 if : github.event_name == 'pull_request' && steps.changed-files.outputs.md_files != ''
3339 uses :
lycheeverse/[email protected] @@ -39,28 +45,31 @@ jobs:
3945 env :
4046 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
4147
48+ # ‣ PR: extract only the .md files with errors
4249 - name : Extract Affected Files (PR)
4350 if : github.event_name == 'pull_request'
4451 id : affected-pr
4552 run : |
4653 mkdir -p sanitized_md
47- affected=$(grep -Eo 'file://[^ ]+\.md' lychee/pr.out | sed 's|file://||' | sort -u)
48- echo "$affected"
54+ grep -Eo 'file://[^ ]+\.md' lychee/pr.out \
55+ | sed 's|file://||' \
56+ | sort -u \
57+ | tee affected.txt
4958 echo "affected_files<<EOF" >> $GITHUB_OUTPUT
50- echo "$ affected" >> $GITHUB_OUTPUT
59+ cat affected.txt >> $GITHUB_OUTPUT
5160 echo "EOF" >> $GITHUB_OUTPUT
5261
62+ # ‣ PR: strip comments **in the copies**
5363 - name : Strip HTML Comments from Affected Files (PR)
5464 if : steps.affected-pr.outputs.affected_files != ''
5565 run : |
56- echo "${{ steps.affected-pr.outputs.affected_files }}" | while read -r file; do
57- if [ -f "$file" ]; then
58- target="sanitized_md/$file"
59- mkdir -p "$(dirname "$target")"
60- perl -0777 -pe 's/<!--.*?-->//gs' "$file" > "$target"
61- fi
62- done
66+ while read -r file; do
67+ src="sanitized_md/$file"
68+ perl -0777 -pe 's/<!--.*?-->//gs' "$src" > "$src.tmp" \
69+ && mv "$src.tmp" "$src"
70+ done < affected.txt
6371
72+ # ‣ PR: **re-run** Lychee on the **sanitized** files
6473 - name : Re-check Sanitized Affected Files (PR)
6574 if : steps.affected-pr.outputs.affected_files != ''
6675 uses :
lycheeverse/[email protected] 7180 env :
7281 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
7382
74- # === MANUAL MODE ===
83+ # --- Manual Dispatch: same two-pass logic ---
7584 - name : Initial Lychee Check on All Markdown (Manual)
7685 if : github.event_name == 'workflow_dispatch'
7786 uses :
lycheeverse/[email protected] @@ -88,22 +97,22 @@ jobs:
8897 id : affected-manual
8998 run : |
9099 mkdir -p sanitized_md
91- affected=$(grep -Eo 'file://[^ ]+\.md' lychee/manual.out | sed 's|file://||' | sort -u)
92- echo "$affected"
100+ grep -Eo 'file://[^ ]+\.md' lychee/manual.out \
101+ | sed 's|file://||' \
102+ | sort -u \
103+ | tee affected-manual.txt
93104 echo "affected_files<<EOF" >> $GITHUB_OUTPUT
94- echo "$ affected" >> $GITHUB_OUTPUT
105+ cat affected-manual.txt >> $GITHUB_OUTPUT
95106 echo "EOF" >> $GITHUB_OUTPUT
96107
97- - name : Strip HTML Comments from Affected Files (Manual)
108+ - name : Strip HTML Comments (Manual)
98109 if : steps.affected-manual.outputs.affected_files != ''
99110 run : |
100- echo "${{ steps.affected-manual.outputs.affected_files }}" | while read -r file; do
101- if [ -f "$file" ]; then
102- target="sanitized_md/$file"
103- mkdir -p "$(dirname "$target")"
104- perl -0777 -pe 's/<!--.*?-->//gs' "$file" > "$target"
105- fi
106- done
111+ while read -r file; do
112+ src="sanitized_md/$file"
113+ perl -0777 -pe 's/<!--.*?-->//gs' "$src" > "$src.tmp" \
114+ && mv "$src.tmp" "$src"
115+ done < affected-manual.txt
107116
108117 - name : Re-check Sanitized Affected Files (Manual)
109118 if : steps.affected-manual.outputs.affected_files != ''
0 commit comments