name: Publish Terminal.Gui to nuget
on:
  push:
    tags:
      - v*

jobs:

  publish:
    name: build, pack & publish
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
        with:
          fetch-depth: 0

      - name: Setup dotnet
        uses: actions/setup-dotnet@v1
        with:
          dotnet-version: 5.0.100

      - name: minver-cli
        run: |
          dotnet tool install --global minver-cli --version 2.4.0
          echo "MINVERVERSIONOVERRIDE=$(minver -t v -d rc)" >> $GITHUB_ENV

      #- name: Install dependencies
      #   run: dotnet restore

      #- name: Build
      #  run: dotnet build --configuration Release --no-restore

      #- name: Pack nuget package with symbols
      #  run: dotnet pack --include-symbols
      
      - name: Publish Terminal.Gui
        id: publish_nuget
        uses: brandedoutcast/publish-nuget@v2.5.5
        with:
          VERSION_STATIC: ${{ env.MINVERVERSIONOVERRIDE }}
          NUGET_SOURCE: https://api.nuget.org

          # Filepath of the project to be packaged, relative to root of repository
          PROJECT_FILE_PATH: Terminal.Gui/Terminal.Gui.csproj
          
          # NuGet package id, used for version detection & defaults to project name
          PACKAGE_NAME: Terminal.Gui
          
          # Filepath with version info, relative to root of repository & defaults to PROJECT_FILE_PATH
          #VERSION_FILE_PATH: Terminal.Gui/Directory.Build.props

          # Regex pattern to extract version info in a capturing group
          #VERSION_REGEX: ^\s*<Version>(.*)<\/Version>\s*$
          
          # Useful with external providers like Nerdbank.GitVersioning, ignores VERSION_FILE_PATH & VERSION_REGEX
          # VERSION_STATIC: 1.0.0

          # Flag to toggle git tagging, enabled by default
          TAG_COMMIT: false

          # Format of the git tag, [*] gets replaced with actual version
          # TAG_FORMAT: v*

          # API key to authenticate with NuGet server
          NUGET_KEY: ${{secrets.NUGET_API_KEY}}

          # NuGet server uri hosting the packages, defaults to https://api.nuget.org
          # NUGET_SOURCE: https://api.nuget.org

          # Flag to toggle pushing symbols along with nuget package to the server, disabled by default
          # This is broken - see https://github.com/brandedoutcast/publish-nuget/issues/30
          INCLUDE_SYMBOLS: false

      - name: Test to generate Code Coverage Report
        run: |
          dotnet test --verbosity normal --collect:"XPlat Code Coverage" --settings UnitTests/coverlet.runsettings
          mv -v UnitTests/TestResults/*/*.* UnitTests/TestResults/

      - name: Create Test Coverage Badge
        uses: simon-k/dotnet-code-coverage-badge@v1.0.0
        id: create_coverage_badge
        with:
          label: Unit Test Coverage
          color: brightgreen
          path: UnitTests/TestResults/coverage.opencover.xml
          gist-filename: code-coverage.json
          # https://gist.github.com/migueldeicaza/90ef67a684cb71db1817921a970f8d27
          gist-id: 90ef67a684cb71db1817921a970f8d27
          gist-auth-token: ${{ secrets.GIST_AUTH_TOKEN }}   

      - name: Print Code Coverage
        run: |
          echo "Code coverage percentage: ${{steps.create_coverage_badge.outputs.percentage}}%"
          echo "Badge data: ${{steps.create_coverage_badge.outputs.badge}}"