name: test-nuget-ubuntu

on: [push, pull_request]

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  build_linux:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build HiGHS
        run: |
         cmake -E make_directory ${{runner.workspace}}/build
         cmake -E make_directory ${{runner.workspace}}/nugets
         cmake -E make_directory ${{runner.workspace}}/test_nuget

      - name: Configure CMake
        working-directory: ${{runner.workspace}}/build
        run: cmake $GITHUB_WORKSPACE -DCSHARP=ON -DBUILD_DOTNET=ON

      - name: Build
        working-directory: ${{runner.workspace}}/build
        run: cmake --build . --config Release --parallel

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

      - name: Dotnet pack
        working-directory: ${{runner.workspace}}/build/dotnet/Highs.Native
        run: dotnet pack -c Release /p:Version=1.8.0

      - name: Add local feed 
        run: dotnet nuget add source ${{runner.workspace}}/nugets

      - name: Dotnet push to local feed
        working-directory: ${{runner.workspace}}/build/dotnet/Highs.Native
        run: dotnet nuget push ./bin/Release/*.nupkg -s ${{runner.workspace}}/nugets

      - name: Create new project and test
        shell: bash
        working-directory: ${{runner.workspace}}/test_nuget
        run: |
          dotnet new console
          rm Program.cs 
          cp $GITHUB_WORKSPACE/examples/call_highs_from_csharp.cs . 
          dotnet add package Highs.Native -s ${{runner.workspace}}/nugets 
          dotnet run

  build_linux_8:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build HiGHS
        run: |
         cmake -E make_directory ${{runner.workspace}}/build
         cmake -E make_directory ${{runner.workspace}}/nugets
         cmake -E make_directory ${{runner.workspace}}/test_nuget

      - name: Configure CMake
        working-directory: ${{runner.workspace}}/build
        run: cmake $GITHUB_WORKSPACE -DCSHARP=ON -DBUILD_DOTNET=ON

      - name: Build
        working-directory: ${{runner.workspace}}/build
        run: cmake --build . --config Release --parallel

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

      - name: Dotnet pack
        working-directory: ${{runner.workspace}}/build/dotnet/Highs.Native
        run: dotnet pack -c Release /p:Version=1.8.0

      - name: Add local feed 
        run: dotnet nuget add source ${{runner.workspace}}/nugets

      - name: Dotnet push to local feed
        working-directory: ${{runner.workspace}}/build/dotnet/Highs.Native
        run: dotnet nuget push ./bin/Release/*.nupkg -s ${{runner.workspace}}/nugets

      - name: Create new project and test
        shell: bash
        working-directory: ${{runner.workspace}}/test_nuget
        run: |
          dotnet new console
          rm Program.cs 
          cp $GITHUB_WORKSPACE/examples/call_highs_from_csharp.cs . 
          dotnet add package Highs.Native -s ${{runner.workspace}}/nugets 
          dotnet run

 
