version: '{build}'

environment:
  AWS_ACCESS_KEY_ID:
    secure: WQRc7y9bDiWiLpjm9lXdw9Q7n4extWau3W1ztQdqMgU=
  AWS_SECRET_ACCESS_KEY:
    secure: pP+D6ZtfXLDcEnl8pk/n3KApaV1fdGns4VkSyebs0zHzCutlvWj7ee16PalCcnBY
  AWS_S3_BUCKET_NAME:
    secure: Bf3x1Iruxg+l3tp+an+g9oE36EHxvyWrE8GTJzZh4Ss=

  matrix:
  - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
    TR_ARCH: x86
    QT_VERSION: '5'
  - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
    TR_ARCH: x86
    QT_VERSION: '6'
  - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
    TR_ARCH: x64
    QT_VERSION: '5'
  - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
    TR_ARCH: x64
    QT_VERSION: '6'

branches:
  only:
  - main
  - /^\d+\.\d+.*/

for:
-
  matrix:
    only:
    - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022

  clone_folder: '%SystemDrive%\%TR_ARCH%-project'

  cache:
  - '%SystemDrive%\%TR_ARCH%-ccache'

  init:
  - pwsh: |
      $Env:APPVEYOR_SAVE_CACHE_ON_ERROR = 'true'

  install:
  - pwsh: |
      $Version = git describe --tags --abbrev=10 --always
      if ($Version -ne $Env:APPVEYOR_REPO_BRANCH) {
          $Version += "-${Env:APPVEYOR_REPO_BRANCH}"
      }

      $BuildIndex = 0
      appveyor UpdateBuild -Version $Version
      while ($LastExitCode -ne 0) {
          $BuildIndex += 1
          appveyor UpdateBuild -Version "${Version}+${BuildIndex}"
      }

      git submodule update --init --recursive

      choco install python3 --pre
      choco install nasm
      choco install jom
      choco install wixtoolset --version 3.11.2
      choco install ccache

      Remove-Item -Path (Join-Path $Env:SystemDrive OpenSSL-Win32) -Recurse
      Remove-Item -Path (Join-Path $Env:SystemDrive OpenSSL-Win64) -Recurse

      Install-Module -Name SignPath

  build_script:
  - pwsh: |
      $Env:PATH = @(
          (Join-Path $Env:SystemDrive Strawberry perl bin)
          (Join-Path $Env:ProgramFiles NASM)
          (Join-Path ${Env:ProgramFiles(x86)} 'WiX Toolset v3.11' bin)
          $Env:PATH
      ) -join [System.IO.Path]::PathSeparator

      $Env:CCACHE_DIR = "${Env:SystemDrive}\${Env:TR_ARCH}-ccache"
      $Env:CCACHE_MAXSIZE = '500Mi'

      Set-ExecutionPolicy -Scope Process Bypass

      try {
          & (Join-Path $Env:APPVEYOR_BUILD_FOLDER release windows main.ps1) `
              -Mode Build `
              -BuildArch $env:TR_ARCH `
              -CCachePart App `
              -UseQtVersion $Env:QT_VERSION `
              -PackDebugSyms:$($Env:APPVEYOR_REPO_BRANCH -eq "main" -or $Env:APPVEYOR_REPO_TAG -eq "true")
      } catch {
          Write-Error ("{1}{0}{2}{0}{3}" -f [Environment]::NewLine, $_.ToString(), $_.InvocationInfo.PositionMessage, $_.ScriptStackTrace) -ErrorAction Continue
          exit 1
      }

  test_script:
  - pwsh: |
      Set-ExecutionPolicy -Scope Process Bypass

      try {
          & (Join-Path $Env:APPVEYOR_BUILD_FOLDER release windows main.ps1) `
              -Mode Test `
              -BuildArch $env:TR_ARCH
      } catch {
          Write-Error ("{1}{0}{2}{0}{3}" -f [Environment]::NewLine, $_.ToString(), $_.InvocationInfo.PositionMessage, $_.ScriptStackTrace) -ErrorAction Continue
          exit 1
      }

  artifacts:
  - path: '*.msi'
  - path: '*-pdb.7z'

  deploy:
  - provider: Webhook
    url: https://app.signpath.io/API/v1/8c96c8c9-a72c-4b46-a53c-80aad617f6bc/Integrations/AppVeyor?ProjectKey=transmission&SigningPolicyKey=release-signing
    authorization:
       secure: PrvcykaHmPgJ0ENht1q58tCfjRcmybiOeHYrvtQtAGsfahWvniAfP66DqHxv872acpyf3FpJn2ETCeszoVuFGA==
    on:
      APPVEYOR_REPO_TAG: true
