name: Release
on:
  push:
    tags:
      - v*
jobs:
  build:
    name: Build
    uses: ./.github/workflows/build.yml
  version:
    name: Prepare version string
    runs-on: ubuntu-latest
    outputs:
      version: ${{ steps.version.outputs.version }}
    steps:
      - name: Output version string
        id: version
        env:
          TAG: ${{ github.ref_name }}
        run: echo "version=${TAG#v}" >> "$GITHUB_OUTPUT"
  package:
    needs: [build, version]
    name: Package
    uses: ./.github/workflows/package.yml
    with:
      version: ${{ needs.version.outputs.version }}
  release:
    needs: [package, version]
    name: Release
    runs-on: ubuntu-latest
    permissions:
      contents: write
    steps:
      - name: Checkout sources
        uses: actions/checkout@v4
      - name: Create release
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          TAG: ${{ github.ref_name }}
          VERSION: ${{ needs.version.outputs.version }}
        run: gh release create "$TAG" -t "Release $VERSION" --notes-from-tag
      - name: Download artifacts
        uses: actions/download-artifact@v4
        with:
          pattern: package.*
          path: packages
          merge-multiple: true
      - name: Upload assets
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          TAG: ${{ github.ref_name }}
        run: gh release upload "$TAG" packages/*