Skip to content

Commit 578bf5f

Browse files
committed
Add: Documentation workflow for Markdown validation
1 parent 4275a95 commit 578bf5f

1 file changed

Lines changed: 93 additions & 0 deletions

File tree

.github/workflows/docs.yml

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
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

Comments
 (0)