trigger:
  branches:
    include:
    - develop
    - releases/*
  paths:
    exclude:
    - '**/*.md'
    - docs/*
pr:
  branches:
    include:
    - develop
    - releases/*
  paths:
    exclude:
    - '**/*.md'
    - docs/*

variables:
  DOTNET_NOLOGO: true
  NUGET_PACKAGES: '$(Pipeline.Workspace)/.nuget/packages'

stages:
- stage: Build

  jobs:
  - job: Build
    pool:
      vmImage: windows-latest

    steps:
    - template: azure-pipelines-shared.yml

    - script: dotnet cake --verbosity=Normal --artifactsDir=$(Build.ArtifactStagingDirectory)

    - task: PublishBuildArtifacts@1
      inputs:
        pathtoPublish: '$(Build.ArtifactStagingDirectory)/NuGet'
        artifactName: 'UnsignedNuGetPackages'

    - task: PublishBuildArtifacts@1
      inputs:
        pathtoPublish: '$(Build.SourcesDirectory)/signclient.json'
        artifactName: 'Signing'

- stage: CodeSign
  condition: and(succeeded('Build'), not(eq(variables['build.reason'], 'PullRequest')))
  jobs:
  - deployment: CodeSign
    displayName: Code Signing
    pool:
      vmImage: windows-latest
    environment: Code Sign - CI
    variables:
    - group: MvvmCross Common
    strategy:
      runOnce:
        deploy:
          steps:

          - task: DotNetCoreCLI@2
            inputs:
              command: custom
              custom: tool
              arguments: install --tool-path . SignClient
            displayName: Install SignTool tool

          - pwsh: |
              .\SignClient "Sign" `
              --baseDirectory "$(Pipeline.Workspace)\UnsignedNuGetPackages" `
              --input "**/*.nupkg" `
              --config "$(Pipeline.Workspace)\Signing\signclient.json" `
              --user "$(SIGNING_USER)" `
              --secret "$(SIGNING_SECRET)" `
              --name "MvvmCross" `
              --description "MvvmCross is a cross platform MVVM framework" `
              --descriptionUrl "https://mvvmcross.com"
            displayName: Authenticode Sign artifacts

          - task: PublishBuildArtifacts@1
            inputs:
              pathtoPublish: '$(Pipeline.Workspace)\UnsignedNuGetPackages'
              artifactName: 'SignedNuGetPackages'