name: Build ZuluSCSI firmware

on: 
  push:
  workflow_dispatch:

jobs:
  build_firmware:
    name: Build firmware on Ubuntu 20.04
    runs-on: ubuntu-20.04
    
    steps:
      - name: Check out code from GitHub
        uses: actions/checkout@v3
        with:
          path: ZuluSCSI
          fetch-depth: "0"
      
      - name: Install platformio
        run: |
          sudo pip install platformio
      
      - name: Build firmware
        run: |
          cd ZuluSCSI
          pio run -v
    
      - name: Rename firmware files
        run: |
          cd ZuluSCSI
          utils/rename_binaries.sh

      - name: Upload binaries into build artifacts
        uses: actions/upload-artifact@v3
        with:
          path: ZuluSCSI/distrib/*
          name: ZuluSCSI binaries
      
      - name: Upload to latest release
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        if: github.ref == 'refs/heads/main'
        run: |
          cd ZuluSCSI
          git tag -d latest
          git tag latest
          git push origin --force latest
          cd distrib
          gh api repos/${GITHUB_REPOSITORY}/releases/tags/latest | jq -r '.assets[] | [.url] | @tsv' | xargs -n 1 gh api -X DELETE || true
          gh release upload --repo ${GITHUB_REPOSITORY} --clobber latest *

      - name: Upload to newly created release
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        if: ${{ startsWith(github.ref, 'refs/tags/') }}
        run: |
          cd ZuluSCSI/distrib
          RELEASE=$(basename ${{github.ref}})
          gh release upload --repo ${GITHUB_REPOSITORY} $RELEASE *
