# Build the site and deploy it to GitHub pages
name: Build

on:  # yamllint disable-line rule:truthy
  push:
    branches:
    - master
    - main
    - '*.*'
    - 'staging*'
  pull_request:
    branches:
    - master
    - main
    - '*.*'
    - 'staging*'

permissions:
  contents: write

jobs:
  build:
    name: Build and Deploy

    runs-on: ubuntu-latest

    env:
      IS_DEPLOY: ${{ (github.event_name == 'push' && '1') || '0' }}
      IS_STAGING: ${{ (github.ref == 'refs/heads/staging' && '1') || '0' }}
      IS_MAIN: ${{ ((github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master') && '1') || '0' }}

    steps:
    - name: Checkout repository
      uses: actions/checkout@v4
    - name: Set up Python
      uses: actions/setup-python@v5
      with:
        python-version: '3.11'
    - name: Install dependencies
      shell: bash
      run: ./ci/install.sh
    - name: List dependencies
      shell: bash
      run: |
        echo $IS_DEPLOY
        echo $IS_PROD
        echo $IS_MAIN
        pip list
    - name: Build site
      shell: bash
      run: ./ci/build.sh
    - name: Postprocess site
      shell: bash
      run: nox -s prepare-multiversion
    - name: Deploy to GitHub Pages
      if: env.IS_DEPLOY == '1'
      uses: JamesIves/github-pages-deploy-action@v4
      with:
        folder: ./doc/_build/html
        clean: false  # Don't remove files from other branches
        dry-run: ${{ (env.IS_STAGING == '1' && 'true') || 'false' }}
