name: Build
on:
  push:
    paths:
      - 'Plain Craft Launcher 2/**'
      - '.github/workflows/**'
  pull_request:
    paths:
      - 'Plain Craft Launcher 2/**'
      - '.github/workflows/**'
  workflow_dispatch:

jobs:
  build:
    name: Build
    runs-on: windows-latest
    strategy:  
       matrix:  
         configuration: [Debug, Release]

    steps:

    - name: Checkout
      uses: actions/checkout@v4
      with:
        fetch-depth: 0

    - name: Set Describe
      shell: bash
      run: |
          describe=`git describe --tags --always`
          echo "describe=$describe" >> $GITHUB_ENV

    - name: Setup MSBuild.exe
      uses: microsoft/setup-msbuild@v2
      with:
        msbuild-architecture: x64
    
    - name: Update Help
      run:  |
        Set-Location ..
        git clone https://github.com/LTCatt/PCL2Help.git -b master --single-branch --depth 1
        Set-Location PCL2Help
        Remove-Item -Path *.* -Recurse -Force
        Compress-Archive -Path .\* -DestinationPath .\Help.zip
        Copy-Item -Path .\Help.zip -Destination "${{ GITHUB.WORKSPACE }}\Plain Craft Launcher 2\Resources\Help.zip" -Force
        Set-Location ..
        Remove-Item PCL2Help -Recurse -Force
        Set-Location ${{ GITHUB.WORKSPACE }}


    - name: Replace
      run: |
        (gc "Plain Craft Launcher 2\Modules\ModSecret.vb") -replace 'Public OAuthClientId As String = If(Environment.GetEnvironmentVariable("PCL_MS_CLIENT_ID"), "")', 'Public OAuthClientId As String = If(Environment.GetEnvironmentVariable("PCL_MS_CLIENT_ID"), "${{ secrets.CLIENT_ID }}")' | Out-File "Plain Craft Launcher 2\Modules\ModSecret.vb"
        (gc "Plain Craft Launcher 2\Modules\ModSecret.vb") -replace 'Public CurseForgeAPIKey As String = If(Environment.GetEnvironmentVariable("PCL_CURSEFORGE_API_KEY"), "")', 'Public CurseForgeAPIKey As String = If(Environment.GetEnvironmentVariable("PCL_CURSEFORGE_API_KEY"), "${{ secrets.CURSEFORGE_API_KEY }}")' | Out-File "Plain Craft Launcher 2\Modules\ModSecret.vb"
        (gc "Plain Craft Launcher 2\Modules\Base\ModBase.vb") -replace 'Public Const CommitHash As String = ""', 'Public Const CommitHash As String = "${{ github.sha }}"' | Out-File "Plain Craft Launcher 2\Modules\Base\ModBase.vb"
        
    - name: Build
      run: msbuild "Plain Craft Launcher 2\Plain Craft Launcher 2.vbproj" -p:Configuration=${{ matrix.configuration }}

    - name: Upload a Build Artifact
      uses: actions/upload-artifact@v4
      with:
        name: ${{ matrix.configuration }} ${{ env.describe }}
        path: Plain Craft Launcher 2\obj\${{ matrix.configuration }}\Plain Craft Launcher 2.exe
