# Copyright 2025 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

name: "Deploy In-development docs"

permissions:
  contents: write

on:
  push:
    branches:
      - main
    paths:
      - 'docs/**'
      - 'github/workflows/docs**'
      - '.hugo/**'

  # Allow triggering manually.
  workflow_dispatch:

jobs:
  deploy:
    runs-on: ubuntu-24.04
    defaults:
      run:
        working-directory: .hugo
    # This shared concurrency group ensures only one docs deployment runs at a time.
    concurrency:
      group: docs-deployment
      cancel-in-progress: false
    steps:
      - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
        with:
          fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod

      - name: Setup Hugo
        uses: peaceiris/actions-hugo@75d2e84710de30f6ff7268e08f310b60ef14033f # v3
        with:
          hugo-version: "0.145.0"
          extended: true

      - name: Setup Node
        uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6
        with:
          node-version: "22"

      - name: Cache dependencies
        uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5
        with:
          path: ~/.npm
          key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            ${{ runner.os }}-node-

      - run: npm ci
      - run: hugo --minify
        env:
          HUGO_BASEURL: https://${{ github.repository_owner }}.github.io/${{ github.event.repository.name }}/dev
          HUGO_RELATIVEURLS: false

      - name: Create Staging Directory
        run: |
          mkdir staging
          mv public staging/dev
          mv staging/dev/releases.releases staging/releases.releases

      - name: Deploy
        uses: peaceiris/actions-gh-pages@4f9cc6602d3f66b9c108549d475ec49e8ef4d45e # v4
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./.hugo/staging
          publish_branch: versioned-gh-pages
          keep_files: true
          commit_message: "deploy: ${{ github.event.head_commit.message }}"
