name: MSVC Build 

on:
  push:
    branches: [ '*' ]
  pull_request:
    branches: [ '*' ]

permissions:
  contents: read
  packages: write

jobs:
  build:
    runs-on: windows-2022
    env:
      THRIFT_BUILD_DIR: C:\thrift-build

    steps:
      - name: Checkout
        uses: actions/checkout@v6

      - name: Ensure expected workspace path
        shell: pwsh
        run: |
          if (-not (Test-Path 'C:\src')) { New-Item -Path 'C:\src' -ItemType Directory | Out-Null }
          if (Test-Path 'C:\src\thrift') { Remove-Item 'C:\src\thrift' -Recurse -Force }
          cmd /c mklink /J C:\src\thrift $env:GITHUB_WORKSPACE

      - name: Configure build output directory
        shell: pwsh
        run: |
          New-Item -Path $env:THRIFT_BUILD_DIR -ItemType Directory -Force | Out-Null

      - name: Set Docker image name
        shell: pwsh
        env:
          OWNER: ${{ github.repository_owner }}
        run: |
          $image = "ghcr.io/{0}/thrift-build" -f $env:OWNER.ToLower()
          "DOCKER_IMAGE=$image" | Out-File -FilePath $env:GITHUB_ENV -Append

      - name: Compute Docker image tag
        shell: pwsh
        run: |
          $hash = (Get-FileHash -Algorithm SHA256 'build/docker/msvc2017/Dockerfile').Hash.ToLower().Substring(0, 12)
          "IMAGE_TAG=msvc2017-$hash" | Out-File -FilePath $env:GITHUB_ENV -Append

      - name: Log in to GHCR
        uses: docker/login-action@v3
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - name: Pull cached image
        id: pull_cached
        continue-on-error: true
        shell: pwsh
        run: |
          $needBuild = $true

          Write-Host "Attempting to pull hash-based tag: $($env:DOCKER_IMAGE):$($env:IMAGE_TAG)"
          docker pull "$($env:DOCKER_IMAGE):$($env:IMAGE_TAG)" 2>&1 | Out-Host
          if ($LASTEXITCODE -eq 0) {
            Write-Host "Successfully pulled cached image with hash tag"
            $needBuild = $false
          } else {
            Write-Host "Hash tag not found, no fallback configured. Will build from scratch."
            $needBuild = $true
          }

          Write-Host "Setting outputs: need_build=$needBuild"
          "need_build=$needBuild" >> $env:GITHUB_OUTPUT

      - name: Build Docker image
        if: steps.pull_cached.outputs.need_build == 'true'
        shell: pwsh
        run: |
          Write-Host "Building with tag: $($env:DOCKER_IMAGE):$($env:IMAGE_TAG)"
          docker build -t "$($env:DOCKER_IMAGE):$($env:IMAGE_TAG)" -f build\docker\msvc2017\Dockerfile 'build\'
          if ($LASTEXITCODE -ne 0) {
            Write-Error "Docker build failed"
            exit 1
          }
          Write-Host "Verifying tags were created:"
          docker images "$($env:DOCKER_IMAGE)"

      - name: Push Docker image
        if: github.event_name != 'pull_request' && steps.pull_cached.outputs.need_build == 'true'
        shell: pwsh
        run: |
          Write-Host "Pushing hash-based tag only: $($env:DOCKER_IMAGE):$($env:IMAGE_TAG)"
          docker push "$($env:DOCKER_IMAGE):$($env:IMAGE_TAG)"
          if ($LASTEXITCODE -ne 0) {
            Write-Error "Failed to push hash-based tag"
            exit 1
          }
          Write-Host "Successfully pushed hash-tagged image"

      - name: Build and test inside container
        shell: pwsh
        run: |
          docker run -v c:\src\thrift:C:\Thrift -v "${env:THRIFT_BUILD_DIR}:C:\build" --rm -t "$($env:DOCKER_IMAGE):$($env:IMAGE_TAG)" c:\thrift\build\docker\msvc2017\build.bat
          if ($LASTEXITCODE -ne 0) {
            Write-Error "Container build failed with exit code $LASTEXITCODE"
            exit $LASTEXITCODE
          }

      - name: Check test results
        if: always()
        shell: pwsh
        run: |
          $logPath = Join-Path $env:THRIFT_BUILD_DIR 'Testing\Temporary\LastTest.log'
          if (Test-Path $logPath) {
            $content = Get-Content $logPath -Raw
            if ($content -match 'Test Failed\.') {
              Write-Error "Tests failed - check LastTest.log artifact for details"
              exit 1
            } else {
              Write-Host "All tests passed"
            }
          } else {
            Write-Error "LastTest.log not found at $logPath"
            exit 1
          }

      - name: Upload LastTest log
        if: always()
        uses: actions/upload-artifact@v6
        with:
          name: msvc2017-LastTest-log
          path: ${{ env.THRIFT_BUILD_DIR }}\Testing\Temporary\LastTest.log
          if-no-files-found: warn
