name: Build and Package

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

jobs:
  build:
    runs-on: windows-latest

    steps:
      - uses: actions/checkout@v3

      - name: Get build number
        id: buildnumber
        run: |
          $runNumber = $env:GITHUB_RUN_NUMBER
          $version = "2.$runNumber"
          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 -p:Version=${{ steps.buildnumber.outputs.version }}

      - name: Create release directory
        run: |
          mkdir release
          $releaseDir = Get-ChildItem -Recurse -Directory -Filter "Release" | Select-Object -First 1
          if ($releaseDir) {
            Write-Host "Release directory found at: $($releaseDir.FullName)"
            
            # Copy main application files (excluding .pdb)
            Copy-Item "$($releaseDir.FullName)\AutoTrackR2.exe" "release\" -ErrorAction SilentlyContinue
            Copy-Item "$($releaseDir.FullName)\AutoTrackR2.dll" "release\" -ErrorAction SilentlyContinue
            Copy-Item "$($releaseDir.FullName)\AutoTrackR2.runtimeconfig.json" "release\" -ErrorAction SilentlyContinue
            Copy-Item "$($releaseDir.FullName)\AutoTrackR2.deps.json" "release\" -ErrorAction SilentlyContinue
            
            # Copy resources
            Copy-Item "$($releaseDir.FullName)\config.ini" "release\" -ErrorAction SilentlyContinue
            Copy-Item "$($releaseDir.FullName)\themes.json" "release\" -ErrorAction SilentlyContinue
            Copy-Item "$($releaseDir.FullName)\AutoTrackR2.ico" "release\" -ErrorAction SilentlyContinue
            
            # Create directories
            mkdir "release\Fonts" -ErrorAction SilentlyContinue
            mkdir "release\Assets" -ErrorAction SilentlyContinue
            mkdir "release\sounds" -ErrorAction SilentlyContinue
            mkdir "release\scripts" -ErrorAction SilentlyContinue
            
            # Copy directories
            Copy-Item "$($releaseDir.FullName)\Fonts\*" "release\Fonts\" -Recurse -ErrorAction SilentlyContinue
            Copy-Item "$($releaseDir.FullName)\Assets\*" "release\Assets\" -Recurse -ErrorAction SilentlyContinue
            Copy-Item "$($releaseDir.FullName)\sounds\*" "release\sounds\" -Recurse -ErrorAction SilentlyContinue
            Copy-Item "AutoTrackR2\scripts\*" "release\scripts\" -Recurse -ErrorAction SilentlyContinue
            
            # List contents of release directory for verification
            Write-Host "Contents of release directory:"
            Get-ChildItem -Path "release" -Recurse | ForEach-Object { Write-Host $_.FullName }
          } else {
            Write-Host "No Release directory found"
            Get-ChildItem -Recurse -Directory | ForEach-Object { Write-Host $_.FullName }
            exit 1
          }

      - name: Create zip file
        run: |
          Compress-Archive -Path "release\*" -DestinationPath "AutoTrackR2-${{ steps.buildnumber.outputs.version }}.zip" -Force

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