name: Publish .NET SDK

on:
  workflow_dispatch:
  push:
    branches:
      - main
    paths:
      - 'apps/dot-net-sdk/**'

jobs:
  publish:
    name: Publish to NuGet
    runs-on: blacksmith-2vcpu-ubuntu-2404
    steps:
      - name: Checkout repository
        uses: actions/checkout@v5

      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: '3.x'

      - name: Install version check dependencies
        run: pip install requests packaging

      - name: Run version check script
        id: version_check
        run: |
          VERSION_INCREMENTED=$(python .github/scripts/check_version_has_incremented.py dotnet ./apps/dot-net-sdk/Firecrawl firecrawl-sdk)
          echo "VERSION_INCREMENTED=$VERSION_INCREMENTED" >> $GITHUB_ENV

      - name: Set up .NET 8
        if: ${{ env.VERSION_INCREMENTED == 'true' }}
        uses: actions/setup-dotnet@v4
        with:
          dotnet-version: '8.0.x'

      - name: Restore dependencies
        if: ${{ env.VERSION_INCREMENTED == 'true' }}
        working-directory: ./apps/dot-net-sdk
        run: dotnet restore

      - name: Build
        if: ${{ env.VERSION_INCREMENTED == 'true' }}
        working-directory: ./apps/dot-net-sdk
        run: dotnet build --no-restore --configuration Release

      - name: Pack
        if: ${{ env.VERSION_INCREMENTED == 'true' }}
        working-directory: ./apps/dot-net-sdk/Firecrawl
        run: dotnet pack --no-build --configuration Release --output ../nupkgs

      - name: Publish to NuGet
        if: ${{ env.VERSION_INCREMENTED == 'true' }}
        working-directory: ./apps/dot-net-sdk
        env:
          NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }}
        run: dotnet nuget push ./nupkgs/*.nupkg --api-key $NUGET_API_KEY --source https://api.nuget.org/v3/index.json --skip-duplicate
