@@ -3,60 +3,41 @@ name: Documentation & Navigation Change Checker
33on :
44 pull_request_target :
55 branches :
6- - url-test # target branch
7- paths :
8- - ' **/*.md'
9- - ' **/*.nav.yml'
10- - ' **/*.nav.yaml'
6+ - url-test
117
128jobs :
139 check-doc-nav-changes :
1410 runs-on : ubuntu-latest
1511 steps :
16- # 1️⃣ Checkout PR branch (fork-safe)
1712 - name : Checkout PR branch
1813 uses : actions/checkout@v4
1914 with :
2015 fetch-depth : 0
2116 ref : ${{ github.event.pull_request.head.ref }}
2217 repository : ${{ github.event.pull_request.head.repo.full_name }}
2318
24- # 2️⃣ Fetch the base branch for diffs
2519 - name : Fetch base branch
26- run : |
27- git fetch origin ${{ github.event.pull_request.base.ref }} --depth=1
20+ run : git fetch origin ${{ github.event.pull_request.base.ref }} --depth=1
2821
29- # 3️⃣ Detect deleted, renamed, and modified files
30- - name : Identify documentation and nav changes
22+ - name : Identify .md and .nav changes
3123 run : |
32- BASE_BRANCH=origin/${{ github.event.pull_request.base.ref }}
33- HEAD_SHA=${{ github.event.pull_request.head.sha }}
34-
35- # Deleted Markdown files
36- DELETED_MD=$(git diff --name-status $BASE_BRANCH $HEAD_SHA | grep '^D.*\.md$' | cut -f2- || true)
24+ BASE=origin/${{ github.event.pull_request.base.ref }}
25+ HEAD=${{ github.event.pull_request.head.sha }}
3726
38- # Renamed Markdown files
39- RENAMED_MD=$(git diff --name-status $BASE_BRANCH $HEAD_SHA | grep '^R.*\.md$' | awk '{print $2 " -> " $3}' || true)
27+ # Markdown changes
28+ DELETED_MD=$(git diff --name-status $BASE $HEAD | grep '^D.*\.md$' | cut -f2- || true)
29+ RENAMED_MD=$(git diff --name-status $BASE $HEAD | grep '^R.*\.md$' | awk '{print $2 " -> " $3}' || true)
4030
41- # Nav files
42- DELETED_NAV=$(git diff --name-status $BASE_BRANCH $HEAD_SHA | grep '^D.*\.nav\.ya?ml$' | cut -f2- || true)
43- MODIFIED_NAV=$(git diff --name-status $BASE_BRANCH $HEAD_SHA | grep -E '^[AM].*\.nav\.ya?ml$' | cut -f2- || true)
44- RENAMED_NAV=$(git diff --name-status $BASE_BRANCH $HEAD_SHA | grep '^R.*\.nav\.ya?ml$' | awk '{print $2 " -> " $3}' || true)
31+ # Nav changes
32+ DELETED_NAV=$(git diff --name-status $BASE $HEAD | grep '^D.*\.nav\.ya?ml$' | cut -f2- || true)
33+ MODIFIED_NAV=$(git diff --name-status $BASE $HEAD | grep -E '^[AM].*\.nav\.ya?ml$' | cut -f2- || true)
34+ RENAMED_NAV=$(git diff --name-status $BASE $HEAD | grep '^R.*\.nav\.ya?ml$' | awk '{print $2 " -> " $3}' || true)
4535
46- # Build NAV_CHANGES with diffs
4736 NAV_CHANGES=""
48- for FILE in $DELETED_NAV; do
49- NAV_CHANGES+="$FILE: [FILE DELETED]\n\n"
50- done
51- for FILE in $MODIFIED_NAV; do
52- DIFF=$(git diff $BASE_BRANCH $HEAD_SHA -- "$FILE" | grep -vE '^\+\+\+|^---' || true)
53- NAV_CHANGES+="$FILE:\n$DIFF\n\n"
54- done
55- for FILE in $RENAMED_NAV; do
56- NAV_CHANGES+="$FILE [RENAMED]\n\n"
57- done
58-
59- # Export to environment
37+ for f in $DELETED_NAV; do NAV_CHANGES+="$f: [DELETED]\n\n"; done
38+ for f in $MODIFIED_NAV; do DIFF=$(git diff $BASE $HEAD -- "$f" | grep -vE '^\+\+\+|^---'); NAV_CHANGES+="$f:\n$DIFF\n\n"; done
39+ for f in $RENAMED_NAV; do NAV_CHANGES+="$f [RENAMED]\n\n"; done
40+
6041 echo "DELETED_MD<<EOF" >> $GITHUB_ENV
6142 echo "$DELETED_MD" >> $GITHUB_ENV
6243 echo "EOF" >> $GITHUB_ENV
@@ -69,43 +50,33 @@ jobs:
6950 echo -e "$NAV_CHANGES" >> $GITHUB_ENV
7051 echo "EOF" >> $GITHUB_ENV
7152
72- # Set warning flag
73- if [ -n "$DELETED_MD" ] || [ -n "$RENAMED_MD" ] || [ -n "$NAV_CHANGES" ]; then
53+ if [ -n "$DELETED_MD$RENAMED_MD$NAV_CHANGES" ]; then
7454 echo "warning=true" >> $GITHUB_ENV
7555 else
7656 echo "warning=false" >> $GITHUB_ENV
7757 fi
7858
79- # 4️⃣ Post PR comment if changes exist
80- - name : Post PR comment
59+ - name : Post PR comment if relevant
8160 if : env.warning == 'true'
8261 uses : actions/github-script@v7
8362 with :
8463 github-token : ${{ secrets.GITHUB_TOKEN }}
8564 script : |
86- const issue_number = context.payload.pull_request.number;
87- const repo = context.repo;
8865 const deletedMd = `${process.env.DELETED_MD}`.trim();
8966 const renamedMd = `${process.env.RENAMED_MD}`.trim();
9067 const navChanges = `${process.env.NAV_CHANGES}`.trim();
9168
92- let message = ` 🔍 **Documentation & Navigation Checker**\n\nThis PR modifies documentation ( .md) or navigation files ( .nav.yml/.nav.yaml), which could affect links and Table of Contents .\n\n` ;
69+ let message = " 🔍 **Documentation & Navigation Checker**\n\nThis PR modifies ` .md` or ` .nav.yml/.nav.yaml` files .\n\n" ;
9370
94- if (deletedMd) {
95- message += `**Deleted Markdown files:**\n\`\`\`\n${deletedMd}\n\`\`\`\n\n`;
96- }
97- if (renamedMd) {
98- message += `**Renamed Markdown files:**\n\`\`\`\n${renamedMd}\n\`\`\`\n\n`;
99- }
100- if (navChanges) {
101- message += `**Navigation file changes:**\n\`\`\`\n${navChanges}\n\`\`\`\n\n`;
102- }
71+ if (deletedMd) message += `**Deleted Markdown files:**\n\`\`\`\n${deletedMd}\n\`\`\`\n\n`;
72+ if (renamedMd) message += `**Renamed Markdown files:**\n\`\`\`\n${renamedMd}\n\`\`\`\n\n`;
73+ if (navChanges) message += `**Navigation file changes:**\n\`\`\`\n${navChanges}\n\`\`\`\n\n`;
10374
104- message += ` 🚨 Please verify:\n- Internal links are correct\n- Navigation structure is still valid \n- Any deleted or renamed entries are handled properly` ;
75+ message += " 🚨 Please verify:\n- Links are correct\n- TOC matches expected structure \n- Deleted/ renamed entries are handled" ;
10576
10677 github.rest.issues.createComment({
107- owner: repo.owner,
108- repo: repo.repo,
109- issue_number: issue_number ,
78+ owner: context. repo.owner,
79+ repo: context. repo.repo,
80+ issue_number: context.payload.pull_request.number ,
11081 body: message
11182 });
0 commit comments