name: CI
on: [push, pull_request]

jobs:
  build:
    strategy:
      matrix:
        configuration: [Debug, Release]

    runs-on: windows-latest

    steps:
    - uses: actions/checkout@v4
      with:
        submodules: true

    - uses: actions/setup-dotnet@v4
      with:
        dotnet-version: '6.0.x'

    - name: Restore dependencies
      run: dotnet restore

    - name: Build
      run: dotnet build --no-restore

    - name: Publish
      run: dotnet publish -p:PublishSingleFile=true -p:CommitHash=${{ github.sha }} -p:CommitRef=${{ github.ref_type }}/${{ github.ref_name }} -r win-x64 -c ${{ matrix.configuration }} --self-contained false .\Bloxstrap\Bloxstrap.csproj

    - name: Upload Artifact
      uses: actions/upload-artifact@v4
      with:
        name: Bloxstrap (${{ matrix.configuration }})
        path: |
          .\Bloxstrap\bin\${{ matrix.configuration }}\net6.0-windows\win-x64\publish\*

  release:
    needs: build
    runs-on: ubuntu-latest
    if: startsWith(github.ref, 'refs/tags/v')

    steps:
      - name: Download x64 release artifact
        uses: actions/download-artifact@v4
        with:
          name: Bloxstrap (Release)
          path: x64

      - name: Rename binaries
        run: |
          mv x64/Bloxstrap.exe Bloxstrap-${{ github.ref_name }}.exe

      - name: Release
        uses: softprops/action-gh-release@v2
        with:
          draft: true
          files: |
            Bloxstrap-${{ github.ref_name }}.exe
          name: Bloxstrap ${{ github.ref_name }}
