# 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 Versioned Docs"

permissions:
  contents: write

on:
  release:
    types: [published]

jobs:
  deploy:
    runs-on: ubuntu-24.04
    # This shared concurrency group ensures only one docs deployment runs at a time.
    concurrency:
      group: docs-deployment
      cancel-in-progress: false
    steps:
      - name: Checkout Code at Tag
        uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
        with:
          ref: ${{ github.event.release.tag_name }}

      - name: Get Version from Release Tag
        run: echo "VERSION=${{ github.event.release.tag_name }}" >> $GITHUB_ENV

      - 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: Install Dependencies
        run: npm ci
        working-directory: .hugo

      - name: Build Hugo Site
        run: hugo --minify
        working-directory: .hugo
        env:
          HUGO_BASEURL: https://${{ github.repository_owner }}.github.io/${{ github.event.repository.name }}/${{ env.VERSION }}/
          HUGO_RELATIVEURLS: false

      - name: Deploy
        uses: peaceiris/actions-gh-pages@4f9cc6602d3f66b9c108549d475ec49e8ef4d45e # v4
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: .hugo/public
          publish_branch: versioned-gh-pages
          destination_dir: ./${{ env.VERSION }}
          keep_files: true
          commit_message: "deploy: docs for ${{ env.VERSION }}"

      - name: Clean Build Directory
        run: rm -rf .hugo/public

      - name: Build Hugo Site
        run: hugo --minify
        working-directory: .hugo
        env:
          HUGO_BASEURL: https://${{ github.repository_owner }}.github.io/${{ github.event.repository.name }}/
          HUGO_RELATIVEURLS: false

      - name: Deploy to root
        uses: peaceiris/actions-gh-pages@4f9cc6602d3f66b9c108549d475ec49e8ef4d45e # v4
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: .hugo/public
          publish_branch: versioned-gh-pages
          keep_files: true
          allow_empty_commit: true
          commit_message: "deploy: docs to root for ${{ env.VERSION }}"
