# This template contains a job which takes .appx packages which were built separately for each
# architecture (arm, x86, etc.) and combines them into a single .appxbundle.

jobs:
- job: Package
  dependsOn:
    - Buildx64
    - Buildx86
    - BuildARM
  condition: |
    and
    (
      in(dependencies.Buildx64.result, 'Succeeded', 'SucceededWithIssues', 'Skipped'),
      in(dependencies.Buildx86.result, 'Succeeded', 'SucceededWithIssues', 'Skipped'),
      in(dependencies.BuildARM.result, 'Succeeded', 'SucceededWithIssues', 'Skipped')
    ) 
  pool:
    vmImage: windows-2019
  workspace:
    clean: outputs
  variables:
    skipComponentGovernanceDetection: true
  steps:
  - checkout: self
    clean: true

  - task: DownloadBuildArtifacts@0
    displayName: Download all .appx artifacts
    inputs:
      artifactName: drop
      itemPattern: '**/*.appx'

  - task: PowerShell@2
    displayName: Generate AppxBundle mapping
    inputs:
      filePath: $(Build.SourcesDirectory)\build\scripts\CreateAppxBundleMapping.ps1
      arguments: '-InputPath $(Build.ArtifactStagingDirectory)\drop\Release -ProjectName Calculator -OutputFile $(Build.BinariesDirectory)\AppxBundleMapping.txt'

  - powershell: |
      $buildVersion = [version]$Env:BUILDVERSION
      $bundleVersion = "2020.$($buildVersion.Minor).$($buildVersion.Build).$($buildVersion.Revision)"
      & "C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x86\MakeAppx.exe" bundle /v /bv $bundleVersion /f $Env:MAPPINGFILEPATH /p $Env:OUTPUTPATH
    displayName: Make AppxBundle
    env:
      BUILDVERSION: $(Build.BuildNumber)
      MAPPINGFILEPATH: $(Build.BinariesDirectory)\AppxBundleMapping.txt
      OUTPUTPATH: $(Build.BinariesDirectory)\Microsoft.WindowsCalculator_8wekyb3d8bbwe.appxbundle

  - task: CopyFiles@2
    displayName: Copy AppxBundle to staging directory
    inputs:
      sourceFolder: $(Build.BinariesDirectory)
      contents: Microsoft.WindowsCalculator_8wekyb3d8bbwe.appxbundle
      targetFolder: $(Build.ArtifactStagingDirectory)\appxBundle

  - task: PublishBuildArtifacts@1
    displayName: Publish AppxBundle artifact
    inputs:
      artifactName: appxBundle
      pathToPublish: $(Build.ArtifactStagingDirectory)\appxBundle
