name: Release

on:
  push:
    tags:
      - "v*.*.*"

permissions:
  contents: write

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

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Zip NixOS Config
        run: zip -rj nixos.zip nixos/

      - name: Release
        uses: softprops/action-gh-release@v2
        with:
          name: PLG-MuDiCS ${{ github.ref_name }}
          body_path: CHANGELOG.md
          files: nixos.zip

  build:
    name: Build and Upload Assets
    needs: release
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        block:
          - control
          - display
    defaults:
      run:
        working-directory: ${{ matrix.block }}
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v4

      - name: Setup Go
        uses: actions/setup-go@v5
        with:
          go-version: "^1.24"
          cache-dependency-path: go.sum

      - name: Setup Deno
        uses: denoland/setup-deno@v2
        if: matrix.block == 'control'
        with:
          deno-version: v2.x

      - name: Install Dependencies
        run: go mod download

      - name: Generate
        run: go generate ./...

      - name: Build
        run: go build -o plg-mudics-${{ matrix.block }} .

      - name: Upload Release Assets
        uses: svenstaro/upload-release-action@v2
        with:
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          file: ${{ matrix.block }}/plg-mudics-${{ matrix.block }}
          tag: ${{ github.ref_name }}
