trackforge 0.1.9

A unified, high-performance computer vision tracking library.
Documentation
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