1+ name : Documentation
2+
3+ on :
4+ push :
5+ branches : [ main ]
6+ paths :
7+ - ' docs/**'
8+ - ' README.md'
9+ - ' CONTRIBUTING.md'
10+ - ' DEVELOPMENT.md'
11+ - ' CHANGELOG.md'
12+ - ' .github/workflows/docs.yml'
13+ pull_request :
14+ branches : [ main ]
15+ paths :
16+ - ' docs/**'
17+ - ' README.md'
18+ - ' CONTRIBUTING.md'
19+ - ' DEVELOPMENT.md'
20+ - ' CHANGELOG.md'
21+ - ' .github/workflows/docs.yml'
22+ workflow_dispatch :
23+
24+ jobs :
25+ markdown-lint :
26+ name : Markdown Lint
27+ runs-on : ubuntu-latest
28+ steps :
29+ - uses : actions/checkout@v4
30+
31+ - name : Install markdownlint-cli
32+ run : npm install -g markdownlint-cli@0.37.0
33+
34+ - name : Run markdownlint
35+ run : markdownlint '**/*.md' --config .markdownlint.json || true
36+
37+ check-links :
38+ name : Check Links
39+ runs-on : ubuntu-latest
40+ steps :
41+ - uses : actions/checkout@v4
42+
43+ - name : Link Checker
44+ uses : lycheeverse/lychee-action@v1.8.0
45+ with :
46+ args : --verbose --no-progress '**/*.md'
47+ env :
48+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
49+
50+ validate-lua-examples :
51+ name : Validate Lua Examples
52+ runs-on : ubuntu-latest
53+ steps :
54+ - uses : actions/checkout@v4
55+
56+ - name : Setup Lua
57+ uses : leafo/gh-actions-lua@v10
58+ with :
59+ luaVersion : " 5.1"
60+
61+ - name : Check Lua code blocks in markdown
62+ run : |
63+ find . -type f -name "*.md" -exec grep -l '```lua' {} \; | while read -r file; do
64+ echo "Checking Lua snippets in $file"
65+
66+ # Create a temporary directory for the snippets
67+ TEMP_DIR=$(mktemp -d)
68+
69+ # Extract Lua code blocks
70+ grep -n '^```lua$' "$file" | while read -r line_start; do
71+ # Get the line number where the lua block starts
72+ line_num=$(echo "$line_start" | cut -d: -f1)
73+
74+ # Find the line number where the next ``` appears
75+ line_end=$(tail -n +$((line_num+1)) "$file" | grep -n '^```$' | head -1 | cut -d: -f1)
76+ if [ -n "$line_end" ]; then
77+ line_end=$((line_num + line_end))
78+
79+ # Extract the lua snippet
80+ snippet_file="${TEMP_DIR}/snippet_${line_num}.lua"
81+ sed -n "$((line_num+1)),$((line_end-1))p" "$file" > "$snippet_file"
82+
83+ # Check syntax if file is not empty
84+ if [ -s "$snippet_file" ]; then
85+ echo " Checking snippet starting at line $line_num in $file"
86+ luac -p "$snippet_file" || echo "Syntax error in $file at line $line_num"
87+ fi
88+ fi
89+ done
90+
91+ # Clean up
92+ rm -rf "$TEMP_DIR"
93+ done
0 commit comments