name: Build and Package

on:
  push:
    branches: [default]
  pull_request:
    branches: [default]

jobs:
  build:
    runs-on: windows-latest

    steps:
      - uses: actions/checkout@v3

      - name: Extract version
        id: version
        run: |
          $version = (Select-String -Path "AutoTrackR2/UpdatePage.xaml.cs" -Pattern 'currentVersion = "(.+?)"' | Select-Object -First 1).Matches.Groups[1].Value
          echo "version=$version" >> $env:GITHUB_OUTPUT

      - name: Setup .NET
        uses: actions/setup-dotnet@v3
        with:
          dotnet-version: "9.0.x"

      - name: Restore dependencies
        run: dotnet restore AutoTrackR2.sln

      - name: Build
        run: dotnet build AutoTrackR2.sln --configuration Release --no-restore

      - name: List build output directories
        run: |
          Write-Host "Listing build output directories:"
          Get-ChildItem -Recurse -Directory -Filter "Release" | ForEach-Object { Write-Host $_.FullName }

      - name: Create artifacts directory
        run: mkdir artifacts

      - name: Copy build output
        run: |
          $releaseDir = Get-ChildItem -Recurse -Directory -Filter "Release" | Select-Object -First 1
          if ($releaseDir) {
            Write-Host "Copying from: $($releaseDir.FullName)"
            Copy-Item "$($releaseDir.FullName)\*" "artifacts\" -Recurse
          } else {
            Write-Host "No Release directory found"
            exit 1
          }

      - name: Upload application artifact
        uses: actions/upload-artifact@v4
        with:
          name: AutoTrackR2-${{ steps.version.outputs.version }}
          path: artifacts/
          retention-days: 5

      - name: Upload visorwipe script
        uses: actions/upload-artifact@v4
        with:
          name: visorwipe.ahk
          path: AutoTrackR2/scripts/visorwipe.ahk
          retention-days: 5

      - name: Upload videorecord script
        uses: actions/upload-artifact@v4
        with:
          name: videorecord.ahk
          path: AutoTrackR2/scripts/videorecord.ahk
          retention-days: 5