name: Publish to WinGet

on:
  release:
    types: [published]

env:
  REGEX: 'Microsoft\.WindowsTerminal(?:Preview)?_([\d.]+)_8wekyb3d8bbwe\.msixbundle$'
  # winget-create will read the following environment variable to access the GitHub token needed for submitting a PR
  # See https://aka.ms/winget-create-token
  WINGET_CREATE_GITHUB_TOKEN: ${{ secrets.WINGET_TOKEN }}

jobs:
  publish:
    runs-on: windows-latest # Action can only run on Windows
    steps:
      - name: Publish Windows Terminal ${{ github.event.release.prerelease && 'Preview' || 'Stable' }}
        run: |
          $assets = '${{ toJSON(github.event.release.assets) }}' | ConvertFrom-Json
          $wingetRelevantAsset = $assets | Where-Object { $_.name -like '*.msixbundle' } | Select-Object -First 1
          $regex = [Regex]::New($env:REGEX)
          $version = $regex.Match($wingetRelevantAsset.name).Groups[1].Value

          $wingetPackage = "Microsoft.WindowsTerminal${{ github.event.release.prerelease && '.Preview' || '' }}"

          & curl.exe -JLO https://aka.ms/wingetcreate/latest
          & .\wingetcreate.exe update $wingetPackage -s -v $version -u $wingetRelevantAsset.browser_download_url
