name: Deploy Docs

on:
  push:
    branches:
      - main

jobs:
  deploy-docs:
    name: Deploy Docs
    if: github.repository_owner == 'zed-industries'
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repo
        uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4
        with:
          clean: false

      - name: Setup mdBook
        uses: peaceiris/actions-mdbook@ee69d230fe19748b7abf22df32acaa93833fad08 # v2
        with:
          mdbook-version: "0.4.37"

      - name: Set up default .cargo/config.toml
        run: cp ./.cargo/collab-config.toml ./.cargo/config.toml

      - name: Install system dependencies
        run: |
          sudo apt-get update
          sudo apt-get install libxkbcommon-dev libxkbcommon-x11-dev

      - name: Build book
        run: |
          set -euo pipefail
          mkdir -p target/deploy
          mdbook build ./docs --dest-dir=../target/deploy/docs/

      - name: Deploy Docs
        uses: cloudflare/wrangler-action@9681c2997648301493e78cacbfb790a9f19c833f # v3
        with:
          apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
          accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
          command: pages deploy target/deploy --project-name=docs

      - name: Deploy Install
        uses: cloudflare/wrangler-action@9681c2997648301493e78cacbfb790a9f19c833f # v3
        with:
          apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
          accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
          command: r2 object put -f script/install.sh zed-open-source-website-assets/install.sh

      - name: Deploy Docs Workers
        uses: cloudflare/wrangler-action@9681c2997648301493e78cacbfb790a9f19c833f # v3
        with:
          apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
          accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
          command: deploy .cloudflare/docs-proxy/src/worker.js

      - name: Deploy Install Workers
        uses: cloudflare/wrangler-action@9681c2997648301493e78cacbfb790a9f19c833f # v3
        with:
          apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
          accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
          command: deploy .cloudflare/docs-proxy/src/worker.js
