permissions:
  contents: write

name: Release

on:
  release:
    types: [published]

jobs:
  release:
    runs-on: ubuntu-latest
    name: Release

    steps:
      - name: 🧰 Checkout
        uses: actions/checkout@v3
        with:
          path: ImHex
          submodules: recursive

      - name: 📜 Verify version and set version variable
        run: |
          project_version=`cat ImHex/VERSION`
          tag_version="${{github.event.release.tag_name}}"
          tag_version="${tag_version:1}"
          if [ "$project_version" != "$tag_version" ]; then
            echo "::warning::$project_version and $tag_version are not the same ! Refusing to populate release"
            exit 1
          fi

          echo "IMHEX_VERSION=$project_version" >> $GITHUB_ENV

      - name: 🗜️ Create tarball from sources with dependencies
        run: tar --exclude-vcs -czvf Full.Sources.tar.gz ImHex
        
      - name: ⬇️ Download artifacts from latest workflow
        uses: dawidd6/action-download-artifact@v2
        with:
          github_token: ${{secrets.GITHUB_TOKEN}}
          workflow: build.yml
          branch: ${{ github.event.release.target_commitish }}
          workflow_conclusion: success
          skip_unpack: true
             
      - name: 🗜️ Unzip files when needed
        run: |	
          for zipfile in ./*.zip
          do
              if [ `zipinfo -1 "$zipfile" | wc -l` -eq 1 ];
              then
                echo "unzipping $zipfile"
                unzip "$zipfile"
                rm "$zipfile"
              else
                echo "keeping $zipfile zipped"
              fi
          done

      - name: 🟩 Rename Windows Portable Zip
        run: mv "Windows Portable.zip" imhex-${{env.IMHEX_VERSION}}-Windows-Portable.zip

      - name: ⬆️ Upload everything to release
        uses: softprops/action-gh-release@v1
        with:
          files: '*'

      - name: ✒️ Prepare PKGBUILD
        run: |
          cp ImHex/dist/Arch/PKGBUILD .
          
          hash=`md5sum imhex-${{env.IMHEX_VERSION}}-ArchLinux.pkg.tar.zst | cut -d ' ' -f 1`

          sed -i 's/%version%/${{env.IMHEX_VERSION}}/g' PKGBUILD
          sed -i "s/(SKIP)/($hash)/g" PKGBUILD

      - name: ⬆️ Publish AUR package
        
        # I couldn't make the condition in the env directly for some reason
        env:
          AUR_SSH_PRIVATE_KEY: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
        if: "${{ env.AUR_SSH_PRIVATE_KEY != '' }}"

        uses: KSXGitHub/github-actions-deploy-aur@v2
        with:
          pkgname: imhex-bin
          pkgbuild: ./PKGBUILD
          commit_username: iTrooz
          commit_email: itrooz@protonmail.com
          ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
          commit_message: Bump to version ${{env.IMHEX_VERSION}}
          ssh_keyscan_types: rsa,dsa,ecdsa,ed25519

      - name: 🎫 Create PatternLanguage release
        uses: ncipollo/release-action@v1
        env:
          RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }}
        if: "${{ env.RELEASE_TOKEN != '' }}"
        with:
          tag: ImHex-v${{env.IMHEX_VERSION}}
          repo: PatternLanguage
          token: ${{ secrets.RELEASE_TOKEN }}

      - name: 🎫 Create ImHex-Patterns release
        uses: ncipollo/release-action@v1
        env:
          RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }}
        if: "${{ env.RELEASE_TOKEN != '' }}"
        with:
          tag: ImHex-v${{env.IMHEX_VERSION}}
          repo: ImHex-Patterns
          token: ${{ secrets.RELEASE_TOKEN }}
