jobs:

- job: GetPRNumber
  pool:
    vmImage: 'windows-2022'
  variables:
    SolutionDir: '$(Build.SourcesDirectory)'
  steps:
    
  - task: PowerShell@2
    displayName: Get PR Number
    inputs:
      targetType: 'inline'
      script: |
        $prId = $env:System_PullRequest_PullRequestNumber
        Write-Host "PR Number  is:-" $env:System_PullRequest_PullRequestNumber

        if (!([string]::IsNullOrWhiteSpace($prId)))
        {
          Set-Content -Path $env:Build_ArtifactStagingDirectory\prId.txt -Value $prId
        }
      
  - task: PublishBuildArtifacts@1
    inputs:
      PathtoPublish: '$(Build.ArtifactStagingDirectory)'
      ArtifactName: 'PRNumber'
      publishLocation: 'Container'
      
- job: Linux
  pool:
    vmImage: 'ubuntu-20.04'
  steps:
  - task: UseDotNet@2
    displayName: 'Use .NET Core SDK 3.1.414'
    inputs:
      version: 3.1.414

  - task: UseDotNet@2
    displayName: 'Use .NET Core SDK 6.0.100'
    inputs:
      version: 6.0.200

  - task: CmdLine@2
    displayName: 'Run Build'
    inputs:
      script: |
        dotnet --info
        printenv
        ./build.sh --target CiAzureLinux --configuration=Release

  - task: PublishTestResults@2
    inputs:
      testResultsFormat: 'VSTest'
      testResultsFiles: '$(Build.SourcesDirectory)/artifacts/test-results/*.trx'
    condition: not(canceled())
     

- job: macOS
  variables:
    SolutionDir: '$(Build.SourcesDirectory)'
  pool:
    vmImage: 'macOS-10.15'
  steps:
  - task: UseDotNet@2
    displayName: 'Use .NET Core SDK 3.1.414'
    inputs:
      version: 3.1.414

  - task: UseDotNet@2
    displayName: 'Use .NET Core SDK 6.0.100'
    inputs:
      version: 6.0.200
      
  - task: CmdLine@2
    displayName: 'Install Mono 5.18'
    inputs:
      script: |
        curl -o ./mono.pkg https://download.mono-project.com/archive/5.18.0/macos-10-universal/MonoFramework-MDK-5.18.0.225.macos10.xamarin.universal.pkg 
        sudo installer -verbose -pkg ./mono.pkg -target /

  - task: CmdLine@2
    displayName: 'Generate avalonia-native'
    inputs:
      script: |
        export COREHOST_TRACE=0
        export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
        export DOTNET_CLI_TELEMETRY_OPTOUT=1
        ./build.sh --target GenerateCppHeaders --configuration Release 

  - task: Xcode@5
    inputs:
      actions: 'build'
      scheme: ''
      sdk: 'macosx11.1'
      configuration: 'Release'
      xcWorkspacePath: '**/*.xcodeproj/project.xcworkspace'
      xcodeVersion: '12' # Options: 8, 9, default, specifyPath
      args: '-derivedDataPath ./'

  - task: CmdLine@2
    displayName: 'Run Build'
    inputs:
      script: |
        export COREHOST_TRACE=0
        export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
        export DOTNET_CLI_TELEMETRY_OPTOUT=1
        which dotnet
        dotnet --info
        printenv
        ./build.sh --target CiAzureOSX --configuration Release --skip-previewer

  - task: PublishTestResults@2
    inputs:
      testResultsFormat: 'VSTest'
      testResultsFiles: '$(Build.SourcesDirectory)/artifacts/test-results/*.trx'
    condition: not(canceled())
  
  - task: PublishBuildArtifacts@1
    inputs:
      pathToPublish: '$(Build.SourcesDirectory)/Build/Products/Release/'
      artifactName: 'Avalonia.Native.OSX'
    condition: succeeded()
    
  - task: PublishBuildArtifacts@1
    inputs:
      pathtoPublish: '$(Build.SourcesDirectory)/artifacts/nuget'
      artifactName: 'NuGetOSX'
    condition: succeeded()

- job: Windows
  pool:
    vmImage: 'windows-2022'
  variables:
    SolutionDir: '$(Build.SourcesDirectory)'
  steps:
  - task: UseDotNet@2
    displayName: 'Use .NET Core SDK 3.1.414'
    inputs:
      version: 3.1.414

  - task: UseDotNet@2
    displayName: 'Use .NET Core SDK 6.0.100'
    inputs:
      version: 6.0.200

  - task: CmdLine@2
    displayName: 'Install Workloads'
    inputs:
      script: |
       dotnet workload install --no-cache --disable-parallel android ios --skip-manifest-update --source "https://api.nuget.org/v3/index.json"

  - task: CmdLine@2
    displayName: 'Install Nuke'
    inputs:
      script: |
       dotnet tool install --global Nuke.GlobalTool --version 0.24.0 

  - task: CmdLine@2
    displayName: 'Run Nuke'
    inputs:
      script: |
        set PATH=%PATH%;%USERPROFILE%\.dotnet\tools
        nuke --target CiAzureWindows --configuration Release
      
  - task: PublishTestResults@2
    inputs:
      testResultsFormat: 'VSTest'
      testResultsFiles: '$(Build.SourcesDirectory)/artifacts/test-results/*.trx'
    condition: not(canceled())

  - task: PublishBuildArtifacts@1
    inputs:
      pathtoPublish: '$(Build.SourcesDirectory)/artifacts/nuget'
      artifactName: 'NuGet'
    condition: succeeded()

  - task: PublishBuildArtifacts@1
    inputs:
      pathToPublish: '$(Build.SourcesDirectory)/artifacts/zip'
      artifactName: 'Samples'
    condition: succeeded()

