name: Build/Publish

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

jobs:
    build:
        runs-on: ubuntu-latest
        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: Download YQ
                run: |
                    sudo wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O /usr/bin/yq;
                    sudo chmod +x /usr/bin/yq
            -   name: Set up S3CMD
                uses: s3-actions/s3cmd@v1.5.0
                with:
                    provider: cloudflare
                    account_id: ${{ secrets.CF_ACCOUNT_ID }}
                    access_key: ${{ secrets.S3_ACCESS_KEY }}
                    secret_key: ${{ secrets.S3_SECRET_KEY }}

            -   name: Publish
                run: npm run semantic-release
                env:
                    NPM_TOKEN: ${{ secrets.NPM_TOKEN }}

            -   name: Publish to S3
                run: |
                    s3cmd put "${{ env.PKG }}" s3://${{ vars.S3_BUCKET }}/$(basename "${{ env.PKG }}")

                    echo Release Zip: https://extension-release.lumeweb.com/$(basename "${{ env.PKG }}")
                    echo Release Zip SHA56: $(sha256sum "${{ env.PKG }}" | awk '{print $1}')
            -   name: Publish to Firefox
                uses: yayuyokitano/firefox-addon@v0.0.6-alpha
                if: ${{ github.ref_name == 'master' }}
                with:
                    api_key: ${{ secrets.AMO_ISSUER }}
                    api_secret: ${{ secrets.AMO_SECRET }}
                    guid: ${{ env.EXTENSION_GUID }}
                    xpi_path: ${{ env.PKG }}
                    src_path: ${{ env.PKG_SRC }}
            -   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
