name: Publish beta NuGet package
on:
  workflow_dispatch:

jobs:
  check:
    runs-on: ubuntu-latest
    name: Check release
    environment: AsyncAPI 
    steps:
    - name: Checkout repository
      uses: actions/checkout@v1

    - name: Semantic Release
      id: semantic
      uses: cycjimmy/semantic-release-action@v3
      with:
        dry_run: true
        ci: false
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    outputs:
      version: ${{ steps.semantic.outputs.new_release_version }}

  pre-release:
    runs-on: ubuntu-latest
    name: Publish NuGet packages
    needs: check
    environment: AsyncAPI 
    strategy:
      matrix:
        package-name: [ "LEGO.AsyncAPI", "LEGO.AsyncAPI.Readers", "LEGO.AsyncAPI.Bindings" ]
    steps:
      - name: Checkout repository
        uses: actions/checkout@v1
        
      - name: Setup .NET Core @ Latest
        uses: actions/setup-dotnet@v1

      - name: Build ${{ matrix.package-name }} project and pack NuGet package
        run: dotnet pack src/${{ matrix.package-name }}/${{ matrix.package-name }}.csproj -c Release -o out-${{ matrix.package-name }} -p:PackageVersion=${{ needs.check.outputs.version }}-beta.${{github.run_number}}

      - name: Push generated package to GitHub Packages registry
        run: dotnet nuget push out-${{ matrix.package-name }}/*.nupkg -s https://api.nuget.org/v3/index.json --skip-duplicate -n --api-key ${{secrets.NUGET}}
