name: '[CI] Build Latest'

on:
    push: # Only run on merges into main that modify files under pyscriptjs/
        branches:
        -   main
        paths:
        -   pyscriptjs/**
        -   .github/workflows/build-latest.yml # Test that workflow works when changed

    pull_request: # Run on any PR that modifies files in pyscriptjs/
        branches:
        -   main
        paths:
        -   pyscriptjs/**
        -   .github/workflows/build-latest.yml # Test that workflow works when changed

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

        # Deploy to S3
        -   name: Configure AWS credentials
            if: github.ref == 'refs/heads/main' # Only deploy on merge into main
            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
            if: github.ref == 'refs/heads/main'
            run: aws s3 sync --quiet ./examples/build/ s3://pyscript.net/latest/
