# Workflow to copy artifacts from the staging bucket to the release bucket when a new GitHub Release is published.

name: Publish Release
run-name: Publish ${{ github.ref_name }}
on:
    release:
        types: [published]
jobs:
    publish-s3:
        name: Publish to Releases
        if: ${{ startsWith(github.ref, 'refs/tags/') }}
        runs-on: ubuntu-latest
        steps:
            - uses: actions/checkout@v4
            - name: Install Task
              uses: arduino/setup-task@v2
              with:
                  version: 3.x
                  repo-token: ${{ secrets.GITHUB_TOKEN }}
            - name: Publish from staging
              run: "task artifacts:publish:${{ github.ref_name }}"
              env:
                  AWS_ACCESS_KEY_ID: "${{ secrets.PUBLISHER_KEY_ID }}"
                  AWS_SECRET_ACCESS_KEY: "${{ secrets.PUBLISHER_KEY_SECRET }}"
                  AWS_DEFAULT_REGION: us-west-2
              shell: bash
    publish-snap-amd64:
        name: Publish AMD64 Snap
        if: ${{ startsWith(github.ref, 'refs/tags/') }}
        needs: [publish-s3]
        runs-on: ubuntu-latest
        steps:
            - uses: actions/checkout@v4
            - name: Install Task
              uses: arduino/setup-task@v2
              with:
                  version: 3.x
                  repo-token: ${{ secrets.GITHUB_TOKEN }}
            - name: Install Snapcraft
              run: sudo snap install snapcraft --classic
              shell: bash
            - name: Download Snap from Release
              uses: robinraju/release-downloader@v1
              with:
                  tag: ${{github.ref_name}}
                  fileName: "*amd64.snap"
            - name: Publish to Snapcraft
              run: "task artifacts:snap:publish:${{ github.ref_name }}"
              env:
                  SNAPCRAFT_STORE_CREDENTIALS: "${{secrets.SNAPCRAFT_LOGIN_CREDS}}"
              shell: bash
    publish-snap-arm64:
        name: Publish ARM64 Snap
        if: ${{ startsWith(github.ref, 'refs/tags/') }}
        needs: [publish-s3]
        runs-on: ubuntu-latest
        steps:
            - uses: actions/checkout@v4
            - name: Install Task
              uses: arduino/setup-task@v2
              with:
                  version: 3.x
                  repo-token: ${{ secrets.GITHUB_TOKEN }}
            - name: Install Snapcraft
              run: sudo snap install snapcraft --classic
              shell: bash
            - name: Download Snap from Release
              uses: robinraju/release-downloader@v1
              with:
                  tag: ${{github.ref_name}}
                  fileName: "*arm64.snap"
            - name: Publish to Snapcraft
              run: "task artifacts:snap:publish:${{ github.ref_name }}"
              env:
                  SNAPCRAFT_STORE_CREDENTIALS: "${{secrets.SNAPCRAFT_LOGIN_CREDS}}"
              shell: bash
    bump-winget:
        name: Submit WinGet PR
        if: ${{ startsWith(github.ref, 'refs/tags/') && !contains(github.ref_name, 'beta') }}
        needs: [publish-s3]
        runs-on: windows-latest
        steps:
            - uses: actions/checkout@v4
            - name: Install Task
              uses: arduino/setup-task@v2
              with:
                  version: 3.x
                  repo-token: ${{ secrets.GITHUB_TOKEN }}
            - name: Install winget
              uses: Cyberboss/install-winget@v1
              with:
                  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
            - name: Install wingetcreate
              run: winget install -e --silent --accept-package-agreements --accept-source-agreements wingetcreate
              shell: pwsh
            - name: Submit WinGet version bump
              run: "task artifacts:winget:publish:${{ github.ref_name }}"
              env:
                  GITHUB_TOKEN: ${{ secrets.WINGET_BUMP_PAT }}
              shell: pwsh
