name: '[CI] Publish Release'

on:
    release:
        types: [published]

env:
    MINICONDA_PYTHON_VERSION: py38
    MINICONDA_VERSION: 4.11.0

defaults:
    run:
        working-directory: pyscriptjs

jobs:
    build:
        runs-on: ubuntu-latest
        permissions:
            contents: read
            id-token: write
        steps:
        -   name: Checkout
            uses: actions/checkout@v3

        -   name: Install node
            uses: actions/setup-node@v3
            with:
                node-version: 18.x

        -   name: Cache node modules
            uses: actions/cache@v3
            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: setup Miniconda
            uses: conda-incubator/setup-miniconda@v2

        -   name: Setup Environment
            run: make setup

        -   name: Build and Test
            run: make test

        # Upload to S3
        -   name: Configure AWS credentials
            uses: aws-actions/configure-aws-credentials@v1.6.1
            with:
                aws-region: ${{secrets.AWS_REGION}}
                role-to-assume: ${{ secrets.AWS_OIDC_RUNNER_ROLE }}

        -   name: Sync to S3
            run: | # Overwrite "latest" alpha + versioned subdirectory
                aws s3 sync --quiet ./examples/build/ s3://pyscript.net/releases/${{ github.ref_name }}
