go-gremlins/gremlins

View on GitHub
.github/workflows/docs.yml

Summary

Maintainability
Test Coverage
name: Documentation

on:
  push:
    branches: [ 'main' ]
  workflow_call:
    inputs:
      version:
        description: The version tag (v0.1.2)
        required: false
        type: string

jobs:
  documentation:
    name: Build documentation
    permissions:
      contents: write
    runs-on: ubuntu-latest
    env:
      GR_VERSION_TAG: ${{ inputs.version || 'next' }}
    if: ${{ github.event_name != 'pull_request' }}
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: '0'
      - uses: actions/setup-python@v4
        with:
          python-version: 3.x
      - run: git fetch origin gh-pages --depth=1
      - run: |
          git config user.name github-actions
          git config user.email github-actions@github.com
      - run: |
          pip install \
            mkdocs-material \
            mkdocs-macros-plugin \
            mike
      - name: Set version env
        if: ${{ env.GR_VERSION_TAG != 'next' }}
        # v1.2.3 ->
        #   GR_FULL_VERSION=1.2.3
        #   GR_SHORT_VERSION=1.2
        #   GR_PATCH_VERSION=2
        run: |
          echo "GR_FULL_VERSION=$(echo $GR_VERSION_TAG | cut -d '/' -f 3 | cut -c2-)" >> $GITHUB_ENV
          echo "GR_SHORT_VERSION=$(echo $GR_VERSION_TAG | cut -d '/' -f 3 | cut -d '.' -f 1,2 | cut -c2-)" >> $GITHUB_ENV
          echo "GR_PATCH_VERSION=$(echo $GR_VERSION_TAG | cut -d '/' -f 3 | cut -d '.' -f 3)" >> $GITHUB_ENV
        # If it is a major or minor, we mark it as latest and default.
      - if: ${{ env.GR_PATCH_VERSION == '0' && env.GR_VERSION_TAG != 'next' }}
        run: |
          mike deploy --update-aliases --push ${{ env.GR_SHORT_VERSION }} latest
          mike list
        working-directory: docs
        # If it is a patch, we don't set it at latest
      - if: ${{ env.GR_PATCH_VERSION != '0' && env.GR_VERSION_TAG != 'next' }}
        run: |
          mike deploy --update-aliases --push ${{ env.GR_SHORT_VERSION }}
          mike list
        working-directory: docs
      - if: ${{ env.GR_VERSION_TAG == 'next' }}
        run: |
          mike deploy --update-aliases --push next
          mike list
        working-directory: docs
      - run: |
          mike set-default --push latest
          mike list
        working-directory: docs