name: $(Build.SourceBranch)$(rev:.r)
trigger:
  - releases/*

pool:
  vmImage: 'windows-latest'

variables:
  rev: $[counter(variables['Build.SourceBranch'], 0)]

stages:
- stage: Build
  displayName: Build
  jobs:
  - job: SetBuildName
    steps:
      - powershell: Write-Host "##vso[build.updatebuildnumber]$env:Build_SourceBranchName.$env:rev"
        displayName: Setting build name for Release
        condition: contains(variables['Build.SourceBranch'], '/releases/')
      - powershell: Write-Host "##vso[build.updatebuildnumber]0.0.0-$env:Build_SourceBranchName.$env:rev"
        displayName: Setting build name for Dev
        condition: not(contains(variables['Build.SourceBranch'], '/releases/'))

  - job: Build
    dependsOn: SetBuildName
    steps:
      - script: npm install
      - powershell: (Get-Content ./package.json) | ForEach-Object { $_ -replace "0.0.0", "$(Build.BuildNumber)" } | Set-Content ./package.json
      - script: npx ng build
      - script: npm pack
      - task: PublishPipelineArtifact@1
        inputs:
         artifact: 'tarball'
         targetPath: 'guimabdo-webtyped-angular-$(Build.BuildNumber).tgz'

- stage: Deploy
  condition: and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/heads/releases/'))
  dependsOn: Build
  displayName: Deploy stage
  jobs:
  - deployment: Deploy
    environment: npm-guimabdo-webtyped-angular
    displayName: NPM - @guimabdo/webtyped-angular
    strategy:
     runOnce:
       deploy:
         steps:
           - task: DownloadPipelineArtifact@2
             inputs:
              artifactName: 'tarball'

           - task: Npm@1
             inputs:
               command: 'custom'
               workingDir: '$(Pipeline.Workspace)'
               customCommand: 'publish guimabdo-webtyped-angular-$(Build.BuildNumber).tgz --access public'
               customEndpoint: 'npm - guimabdo'
