name: Build/Publish

on:
    push:
        branches:
            - master
            - develop
            - develop-*
    workflow_call:

jobs:
    build:
        runs-on: ubuntu-latest
        env:
            RCLONE_CONFIG_S3_TYPE: s3
            RCLONE_CONFIG_S3_PROVIDER: Cloudflare
            RCLONE_CONFIG_S3_ACCESS_KEY_ID: ${{ secrets.S3_ACCESS_KEY }}
            RCLONE_CONFIG_S3_SECRET_ACCESS_KEY: ${{ secrets.S3_SECRET_KEY }}
            RCLONE_CONFIG_S3_ENDPOINT: ${{ secrets.CF_ACCOUNT_ID }}.r2.cloudflarestorage.com
        steps:
            -   uses: actions/checkout@v3
            -   name: Use Node.js
                uses: actions/setup-node@v3
                with:
                    node-version: 18.x
                    cache: 'npm'
            -   run: npm ci
            -   run: npm run build --if-present
                env:
                    NODE_OPTIONS: "--max_old_space_size=4096"
            -   name: Install SSH key
                uses: shimataro/ssh-key-action@v2
                with:
                    key: ${{ secrets.GITEA_SSH_KEY }}
                    known_hosts: ${{ secrets.GITEA_KNOWN_HOST }}
            -   name: Publish
                run: npm run semantic-release
                env:
                    NPM_TOKEN: ${{ secrets.NPM_TOKEN }}

            -   name: Clean Up Robots Dev
                if: ${{ github.ref_name == 'develop' }}
                run: mv dist/robots-dev.txt dist/robots.txt

            -   name: Clean Up Robots Prod
                if: ${{ github.ref_name == 'master' }}
                run: rm dist/robots-dev.txt

            -   name: Setup RClone
                run: curl https://rclone.org/install.sh | sudo bash -s
            -   name: Publish to S3 Dev
                if: ${{ github.ref_name == 'develop' }}
                run: rclone sync dist/ s3:${{ vars.S3_BUCKET_DEV }}/

            -   name: Publish to S3 Prod
                if: ${{ github.ref_name == 'master' }}
                run: rclone sync dist/ s3:${{ vars.S3_BUCKET }}/
            -   name: Setup tmate session
                uses: mxschmitt/action-tmate@v3
                if: ${{ github.event_name == 'workflow_dispatch' && inputs.debug_enabled && failure() }}
                with:
                    limit-access-to-actor: true
