1- name : Navigation File Change Checker
1+ name : Documentation & Navigation Change Checker
22
33on :
44 pull_request_target :
55 branches :
66 - url-test # target branch
77 paths :
8+ - ' **/*.md'
89 - ' **/*.nav.yml'
910 - ' **/*.nav.yaml'
1011
1112jobs :
12- check-nav-changes :
13+ check-doc- nav-changes :
1314 runs-on : ubuntu-latest
1415 steps :
15- # 1️⃣ Checkout the PR branch (fork-safe)
16+ # 1️⃣ Checkout PR branch (fork-safe)
1617 - name : Checkout PR branch
1718 uses : actions/checkout@v4
1819 with :
1920 fetch-depth : 0
2021 ref : ${{ github.event.pull_request.head.ref }}
2122 repository : ${{ github.event.pull_request.head.repo.full_name }}
2223
23- # 2️⃣ Fetch the base branch so git diff works
24+ # 2️⃣ Fetch the base branch for diffs
2425 - name : Fetch base branch
2526 run : |
2627 git fetch origin ${{ github.event.pull_request.base.ref }} --depth=1
2728
28- # 3️⃣ Detect nav file changes
29- - name : Detect nav file changes
29+ # 3️⃣ Detect deleted, renamed, and modified files
30+ - name : Identify documentation and nav changes
3031 run : |
3132 BASE_BRANCH=origin/${{ github.event.pull_request.base.ref }}
3233 HEAD_SHA=${{ github.event.pull_request.head.sha }}
3334
34- # Deleted nav files
35- DELETED_NAV=$(git diff --name-status $BASE_BRANCH $HEAD_SHA | grep '^D.*\.nav\.ya?ml$' | cut -f2- || true)
35+ # Deleted Markdown files
36+ DELETED_MD=$(git diff --name-status $BASE_BRANCH $HEAD_SHA | grep '^D.*\.md$' | cut -f2- || true)
37+
38+ # Renamed Markdown files
39+ RENAMED_MD=$(git diff --name-status $BASE_BRANCH $HEAD_SHA | grep '^R.*\.md$' | awk '{print $2 " -> " $3}' || true)
3640
37- # Added or modified nav files
41+ # Nav files
42+ DELETED_NAV=$(git diff --name-status $BASE_BRANCH $HEAD_SHA | grep '^D.*\.nav\.ya?ml$' | cut -f2- || true)
3843 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)
3945
46+ # Build NAV_CHANGES with diffs
4047 NAV_CHANGES=""
41-
42- # Process deleted files
4348 for FILE in $DELETED_NAV; do
4449 NAV_CHANGES+="$FILE: [FILE DELETED]\n\n"
4550 done
46-
47- # Process added or modified files
4851 for FILE in $MODIFIED_NAV; do
4952 DIFF=$(git diff $BASE_BRANCH $HEAD_SHA -- "$FILE" | grep -vE '^\+\+\+|^---' || true)
5053 NAV_CHANGES+="$FILE:\n$DIFF\n\n"
5154 done
55+ for FILE in $RENAMED_NAV; do
56+ NAV_CHANGES+="$FILE [RENAMED]\n\n"
57+ done
5258
5359 # Export to environment
60+ echo "DELETED_MD<<EOF" >> $GITHUB_ENV
61+ echo "$DELETED_MD" >> $GITHUB_ENV
62+ echo "EOF" >> $GITHUB_ENV
63+
64+ echo "RENAMED_MD<<EOF" >> $GITHUB_ENV
65+ echo "$RENAMED_MD" >> $GITHUB_ENV
66+ echo "EOF" >> $GITHUB_ENV
67+
5468 echo "NAV_CHANGES<<EOF" >> $GITHUB_ENV
5569 echo -e "$NAV_CHANGES" >> $GITHUB_ENV
5670 echo "EOF" >> $GITHUB_ENV
5771
5872 # Set warning flag
59- if [ -n "$NAV_CHANGES" ]; then
73+ if [ -n "$DELETED_MD" ] || [ -n "$RENAMED_MD" ] || [ -n "$ NAV_CHANGES" ]; then
6074 echo "warning=true" >> $GITHUB_ENV
6175 else
6276 echo "warning=false" >> $GITHUB_ENV
6377 fi
6478
65- # Debug output
66- echo -e "NAV file changes detected:\n$NAV_CHANGES"
67-
68- # 4️⃣ Post a comment if changes exist
79+ # 4️⃣ Post PR comment if changes exist
6980 - name : Post PR comment
7081 if : env.warning == 'true'
7182 uses : actions/github-script@v7
@@ -74,14 +85,23 @@ jobs:
7485 script : |
7586 const issue_number = context.payload.pull_request.number;
7687 const repo = context.repo;
88+ const deletedMd = `${process.env.DELETED_MD}`.trim();
89+ const renamedMd = `${process.env.RENAMED_MD}`.trim();
7790 const navChanges = `${process.env.NAV_CHANGES}`.trim();
7891
79- let formatted = navChanges.split('\n').map(line => {
80- if (line.includes('[FILE DELETED]')) return `❌ ${line.replace(': [FILE DELETED]', '')}`;
81- return line;
82- }).join('\n');
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`;
93+
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+ }
83103
84- const message = `🔍 **Navigation File Changes Detected**\n\nThis PR modifies navigation files (.nav.yml/.nav.yaml) which could affect the Table of Contents.\n\n**Changes:**\n\`\`\`\n${formatted}\n\`\`\`\n\n 🚨 Please verify:\n- Navigation structure still matches intended URLs \n- Internal links are correct \n- Any deleted entries are handled or redirected `;
104+ message + = `🚨 Please verify:\n- Internal links are correct \n- Navigation structure is still valid \n- Any deleted or renamed entries are handled properly `;
85105
86106 github.rest.issues.createComment({
87107 owner: repo.owner,
0 commit comments