name: Build and publish server

on:
  workflow_dispatch:
  push:
  pull_request:

jobs:

  build:

    strategy:
      matrix:
        configuration: [Release]

    runs-on: windows-latest  # For a list of available runner types, refer to
                             # https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idruns-on

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

    # Install the .NET Core workload
    - name: Install .NET 8
      uses: actions/setup-dotnet@v4
      with:
        dotnet-version: 8.0.x

    # Add  MSBuild to the PATH: https://github.com/microsoft/setup-msbuild
    - name: Setup MSBuild
      uses: microsoft/setup-msbuild@v2

    - name: Restore packages
      run: dotnet restore
      
    - name: Publish Server Selector GUI
      run: dotnet publish ServerSelector.Desktop

    - name: Publish Server
      run: dotnet publish nksrv

    - name: Copy to output
      run: echo ${{ github.workspace }} && md ${{ github.workspace }}/out/ && xcopy /s /e "${{ github.workspace }}\ServerSelector.Desktop\bin\Release\net8.0\win-x64\publish\" "${{ github.workspace }}\out\" && xcopy /s /e "${{ github.workspace }}\nksrv\bin\Release\net8.0\win-x64\publish\" "${{ github.workspace }}\out\"  && copy "${{ github.workspace }}\ServerSelector.Desktop\sodium.dll" "${{ github.workspace }}\out\sodium.dll"
  
    - name: Upload build artifacts
      uses: actions/upload-artifact@v4
      with:
        name: Server and Server selector
        path: ${{ github.workspace }}/out/
