@@ -0,0 +1,66 @@
1+name: Deploy Playground to GitHub Pages
2+
3+on:
4+ push:
5+ branches: [master]
6+ workflow_dispatch:
7+
8+permissions:
9+ contents: read
10+ pages: write
11+ id-token: write
12+
13+concurrency:
14+ group: pages
15+ cancel-in-progress: false
16+
17+jobs:
18+ build:
19+ name: Build playground
20+ runs-on: ubuntu-latest
21+ steps:
22+ - uses: actions/checkout@v4
23+
24+ - uses: dtolnay/rust-toolchain@stable
25+ with:
26+ targets: wasm32-unknown-unknown
27+
28+ - uses: Swatinem/rust-cache@v2
29+
30+ - name: Install wasm-bindgen-cli
31+ # Version must match the wasm-bindgen dep in crates/htmlang-wasm/Cargo.toml
32+ run: cargo install wasm-bindgen-cli --version 0.2.114 --locked
33+
34+ - name: Build htmlang-wasm
35+ run: cargo build --release --target wasm32-unknown-unknown -p htmlang-wasm
36+
37+ - name: Generate wasm bindings
38+ run: |
39+ wasm-bindgen --target no-modules --no-typescript \
40+ --out-dir target/wasm-pkg \
41+ target/wasm32-unknown-unknown/release/htmlang_wasm.wasm
42+
43+ - name: Build htmlang CLI
44+ run: cargo build --release --bin htmlang
45+
46+ - name: Generate playground HTML
47+ run: |
48+ mkdir -p dist
49+ ./target/release/htmlang playground dist/index.html
50+
51+ - name: Upload Pages artifact
52+ uses: actions/upload-pages-artifact@v3
53+ with:
54+ path: dist
55+
56+ deploy:
57+ name: Deploy to GitHub Pages
58+ needs: build
59+ runs-on: ubuntu-latest
60+ environment:
61+ name: github-pages
62+ url: ${{ steps.deployment.outputs.page_url }}
63+ steps:
64+ - name: Deploy
65+ id: deployment
66+ uses: actions/deploy-pages@v4