Skip to content

Commit 368c4ea

Browse files
Update Broken-links-checker-final.yml
1 parent 7369b43 commit 368c4ea

File tree

1 file changed

+34
-25
lines changed

1 file changed

+34
-25
lines changed

.github/workflows/Broken-links-checker-final.yml

Lines changed: 34 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -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]
@@ -71,7 +80,7 @@ jobs:
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

Comments
 (0)