name: Build and Deploy Docs
on:
push:
branches:
- main
workflow_dispatch:
pull_request:
branches:
- main
permissions:
contents: write
jobs:
build-docs-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Set up Rust
uses: dtolnay/rust-toolchain@nightly
- name: Install uv
uses: astral-sh/setup-uv@v7
with:
python-version: '3.11'
activate-environment: 'true'
- name: Install dependencies
run: |
uv pip install zensical "mkdocstrings[python]" maturin
cargo install cargo-docs-md
- name: Build Python package
run: maturin develop
- name: Generate Rustdoc JSON
run: cargo +nightly doc --no-deps
env:
RUSTDOCFLAGS: "-Z unstable-options --output-format json"
- name: Convert Rustdoc to Markdown
run: |
mkdir -p docs/api
cargo docs-md -p target/doc/trackforge.json -o docs/api --full-method-docs
python3 scripts/fix_docs.py
- name: Build Zensical site
run: zensical build --clean
- name: Deploy to GitHub Pages
if: github.event_name == 'push' || github.event_name == 'workflow_dispatch'
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./site