name: Build & Release

on:
  push:
    branches:
      - main
    paths:
      - "src/**"
      - ".github/workflows/**.yml"

jobs:
  build-and-release:
    runs-on: windows-latest

    permissions:
      contents: write

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

      - name: Install Visual Studio Build Tools
        uses: microsoft/setup-msbuild@v2

      - name: Run build script
        working-directory: ./src
        run: powershell -ExecutionPolicy Bypass -File workflow.ps1
      - name: Extract release information
        id: extract
        run: |
          $version = Get-Content -Path src\version
          $prerelease = Get-Content -Path src\prerelease
          $title = Get-Content -Path src\title
          $message = Get-Content -Raw -Path src\message

          $output = @"
          version=$version
          prerelease=$prerelease
          title=$title
          body<<EOF
          $message
          EOF
          "@

          $output | Out-File -FilePath $env:GITHUB_OUTPUT -Encoding utf8 -Append

      - name: Delete existing ZIP asset (if any)
        uses: mknejp/delete-release-assets@v1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          tag: ${{ steps.extract.outputs.version }}
          assets: DSL-KeyPad-${{ steps.extract.outputs.version }}.zip
          fail-if-no-release: false
          fail-if-no-assets: false

      - name: Create or update GitHub Release
        uses: softprops/action-gh-release@v2
        with:
          tag_name: ${{ steps.extract.outputs.version }}
          name: ${{ steps.extract.outputs.title }}
          body: ${{ steps.extract.outputs.body }}
          draft: false
          prerelease: ${{ steps.extract.outputs.prerelease == 'True' }}
          files: |
            DSL-KeyPad-${{ steps.extract.outputs.version }}.zip
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
