name: tinymist::gh_pages
on:
  push:
    branches:
      - main
  workflow_dispatch:
    
permissions:
  pages: write
  id-token: write
  contents: read

# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
  group: 'pages'
  cancel-in-progress: false

jobs:
  build-gh-pages:
    runs-on: ubuntu-latest
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    steps:
      - name: Checkout
        uses: actions/checkout@v3
      - run: git submodule update --init --recursive
      - name: Make directories
        run: |
          if [ ! -d "${XDG_DATA_HOME:-$HOME/.local/share}" ]; then
            echo "Creating data directory: ${XDG_DATA_HOME:-$HOME/.local/share}"
            mkdir -p ${XDG_DATA_HOME:-$HOME/.local/share}
          else
            echo "Data directory already exists: ${XDG_DATA_HOME:-$HOME/.local/share}"
          fi
          if [ ! -d "${XDG_CACHE_HOME:-$HOME/.cache}" ]; then
            echo "Creating cache directory: ${XDG_CACHE_HOME:-$HOME/.cache}"
            mkdir -p ${XDG_CACHE_HOME:-$HOME/.cache}
          else
            echo "Cache directory already exists: ${XDG_CACHE_HOME:-$HOME/.cache}"
          fi
      - name: Download font assets
        # use fonts in stable releases
        run: |
          mkdir -p assets/fonts/
          curl -L https://github.com/Myriad-Dreamin/shiroa/releases/download/v0.1.2/font-assets.tar.gz | tar -xvz -C assets/fonts
          curl -L https://github.com/Myriad-Dreamin/shiroa/releases/download/v0.1.0/charter-font-assets.tar.gz | tar -xvz -C assets/fonts
          curl -L https://github.com/Myriad-Dreamin/shiroa/releases/download/v0.1.5/source-han-serif-font-assets.tar.gz | tar -xvz -C assets/fonts
      - name: Download & install shiroa
        run: |
          curl --proto '=https' --tlsv1.2 -LsSf https://github.com/Myriad-Dreamin/shiroa/releases/download/v0.3.1-rc4/shiroa-installer.sh | sh
      - name: Install Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 24
          cache: 'yarn'
      - name: Install deps
        run: yarn install
      - name: Build Preview Html
        run: |
          yarn build:preview
      - name: Build Book
        run: |
          shiroa build --font-path ./assets/typst-fonts/ --font-path ./assets/fonts/ --path-to-root /tinymist/ -w . docs/tinymist --mode=static-html
      - name: Build Cargo Docs
        run: |
          cargo doc --workspace --no-deps
          cp -r target/doc dist/tinymist/rs
      - name: Build Renderer Diff
        run: yarn build:renderer-diff
      - name: Attach Renderer Diff
        run: |
          mkdir -p dist/tinymist/renderer-diff
          cp -R contrib/renderer-diff/dist/. dist/tinymist/renderer-diff/
      - name: Setup Pages
        uses: actions/configure-pages@v5
      - name: Upload artifact
        uses: actions/upload-pages-artifact@v3
        with:
          # Upload `/github-pages` sub directory
          path: './dist/tinymist'
      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v4
