name: "Prepare Release"

on:
    push:
        tags:
            - "[0-9][0-9][0-9][0-9].[0-9][0-9].[0-9]+" # YYYY.MM.MICRO

defaults:
    run:
        working-directory: ./core

jobs:
    prepare-release:
        runs-on: ubuntu-latest
        steps:
            - name: Checkout
              uses: actions/checkout@v5

            - name: Install node
              uses: actions/setup-node@v5
              with:
                  node-version: 20.x

            - name: Python venv
              run: python -m venv env

            - name: Activate Python
              run: source env/bin/activate

            - name: Update pip
              run: pip install --upgrade pip

            - name: Install PyMinifier
              run: pip install --ignore-requires-python python-minifier

            - name: Install Setuptools
              run: pip install setuptools

            - name: Cache node modules
              uses: actions/cache@v4
              env:
                  cache-name: cache-node-modules
              with:
                  # npm cache files are stored in `~/.npm` on Linux/macOS
                  path: ~/.npm
                  key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
                  restore-keys: |
                      ${{ runner.os }}-build-${{ env.cache-name }}-
                      ${{ runner.os }}-build-
                      ${{ runner.os }}-

            - name: NPM Install
              run: npm install && npx playwright install chromium

            - name: Build
              run: npm run build

            - name: Generate index.html
              working-directory: .
              run: sed -e 's#_PATH_#./#' -e 's#_DOC_VERSION_#latest#' -e 's#_TAG_VERSION_##' -e 's#_VERSION_#latest#' ./public/index.html > ./core/dist/index.html

            - name: Zip dist folder
              run: zip -r -q ./build.zip ./dist

            - name: Prepare Release
              uses: softprops/action-gh-release@v2
              with:
                  draft: true
                  prerelease: true
                  generate_release_notes: true
                  files: ./build.zip
