-
Notifications
You must be signed in to change notification settings - Fork 0
187 lines (153 loc) · 6.58 KB
/
Copy pathdocs.yml
File metadata and controls
187 lines (153 loc) · 6.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
name: Deploy Docs
on:
push:
branches: [main]
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: pages
cancel-in-progress: false
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y libgl1-mesa-dev libglu1-mesa-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libxxf86vm-dev libasound2-dev libudev-dev libxkbcommon-x11-dev
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Cache cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ubuntu-cargo-docs-${{ hashFiles('**/Cargo.lock') }}
restore-keys: ubuntu-cargo-docs-
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: '20'
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: '3.11'
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.x'
- name: Install mdbook
run: |
mkdir -p "$HOME/.cargo/bin"
tag=$(curl -sI https://github.com/rust-lang/mdBook/releases/latest | grep -i '^location:' | sed 's|.*/tag/||;s/\r//')
curl -sSL "https://github.com/rust-lang/mdBook/releases/download/${tag}/mdbook-${tag}-x86_64-unknown-linux-gnu.tar.gz" \
| tar -xz -C "$HOME/.cargo/bin"
echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
# ── Rust API docs ──────────────────────────────────────────────
- name: Build Rust API docs
run: cargo doc --no-deps -p goud-engine-core -p goud-engine
env:
RUSTDOCFLAGS: "--default-theme ayu"
- name: Copy Rust docs into site
run: |
mkdir -p docs/book/api
cp -r target/doc docs/book/api/rust
# ── Run codegen (generates SDK files with doc comments) ────────
- name: Run codegen
run: ./codegen.sh
# ── Python API docs ────────────────────────────────────────────
- name: Build native library for Python docs
run: cargo build --release
- name: Install pdoc
run: pip install pdoc
- name: Build Python API docs
run: |
pdoc --output-dir docs/book/api/python sdks/python/goudengine
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/target/release
GOUD_ENGINE_LIB: ${{ github.workspace }}/target/release
PDOC_ALLOW_EXEC: "1"
PYTHONPATH: ${{ github.workspace }}/sdks/python
# ── TypeScript API docs ────────────────────────────────────────
- name: Install TypeScript dependencies
working-directory: sdks/typescript
run: npm ci
- name: Install Playwright Chromium
working-directory: sdks/typescript
run: npx playwright install --with-deps chromium
- name: Generate showcase media
working-directory: sdks/typescript
run: node scripts/generate-doc-media.mjs
- name: Generate showcase docs
run: python3 scripts/generate-showcase-docs.py
- name: Generate download bundles
run: |
mkdir -p docs/src/generated/downloads
rm -f docs/src/generated/downloads/*.zip
zip -qr docs/src/generated/downloads/flappy-csharp.zip examples/csharp/flappy_goud
zip -qr docs/src/generated/downloads/flappy-python.zip examples/python/flappy_bird.py
zip -qr docs/src/generated/downloads/flappy-typescript.zip examples/typescript/flappy_bird
zip -qr docs/src/generated/downloads/flappy-rust.zip examples/rust/flappy_bird
# ── Build mdBook site ──────────────────────────────────────────
- name: Build mdBook
run: mdbook build
- name: Build TypeScript SDK
working-directory: sdks/typescript
run: npm run build:ts
- name: Build TypeScript API docs
working-directory: sdks/typescript
run: |
npx typedoc \
--tsconfig tsconfig.typedoc.json \
--entryPoints src/generated/node/index.g.ts src/generated/web/index.g.ts src/generated/types/engine.g.ts src/generated/types/math.g.ts \
--out ../../docs/book/api/typescript \
--name "GoudEngine TypeScript SDK"
# ── C# API docs ───────────────────────────────────────────────
- name: Install DocFX
run: |
dotnet tool install -g docfx
echo "$HOME/.dotnet/tools" >> "$GITHUB_PATH"
- name: Build C# API docs
working-directory: sdks/csharp
run: |
dotnet restore GoudEngine.csproj
dotnet build -c Release --no-restore
docfx build docfx.json
cp -r _site ../../docs/book/api/csharp
# ── C/C++ API docs (Doxygen) ─────────────────────────────────
- name: Install Doxygen and Graphviz
run: sudo apt-get install -y doxygen graphviz
- name: Build C/C++ API docs
working-directory: sdks
run: doxygen Doxyfile
- name: Copy C/C++ docs
run: |
mkdir -p docs/book/api/c-cpp
cp -r sdks/doxygen_output/html/* docs/book/api/c-cpp/
- name: Validate generated docs artifacts
run: bash scripts/check-generated-artifacts.sh --docs
# ── Finalize ───────────────────────────────────────────────────
- name: Copy CNAME
run: cp docs/CNAME docs/book/CNAME
- name: Upload Pages artifact
uses: actions/upload-pages-artifact@v5
with:
path: docs/book
deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v5