trigger:
  batch: true
  branches:
    include:
      - master
      - next
      - version-*

stages:
  - stage: generate
    jobs:
      - job: generate_api
        pool:
          vmImage: 'ubuntu-latest'
        steps:
          - task: NodeTool@0
            inputs:
              versionSpec: '16.x'
            displayName: 'Install Node.js'
          - task: CmdLine@2
            inputs:
              script: make gen-web
          - task: PublishPipelineArtifact@1
            inputs:
              targetPath: 'web/api/'
              artifact: 'ts_api_client'
              publishLocation: 'pipeline'
  - stage: lint
    jobs:
      - job: eslint
        pool:
          vmImage: 'ubuntu-latest'
        steps:
          - task: NodeTool@0
            inputs:
              versionSpec: '16.x'
            displayName: 'Install Node.js'
          - task: DownloadPipelineArtifact@2
            inputs:
              buildType: 'current'
              artifactName: 'ts_api_client'
              path: "web/api/"
          - task: Npm@1
            inputs:
              command: 'install'
              workingDir: 'web/'
          - task: Npm@1
            inputs:
              command: 'custom'
              workingDir: 'web/'
              customCommand: 'run lint'
      - job: lit_analyse
        pool:
          vmImage: 'ubuntu-latest'
        steps:
          - task: NodeTool@0
            inputs:
              versionSpec: '16.x'
            displayName: 'Install Node.js'
          - task: DownloadPipelineArtifact@2
            inputs:
              buildType: 'current'
              artifactName: 'ts_api_client'
              path: "web/api/"
          - task: Npm@1
            inputs:
              command: 'install'
              workingDir: 'web/'
          - task: Npm@1
            inputs:
              command: 'custom'
              workingDir: 'web/'
              customCommand: 'run lit-analyse'
  - stage: build_local
    jobs:
      - job: build
        pool:
          vmImage: 'ubuntu-latest'
        steps:
          - task: NodeTool@0
            inputs:
              versionSpec: '16.x'
            displayName: 'Install Node.js'
          - task: DownloadPipelineArtifact@2
            inputs:
              buildType: 'current'
              artifactName: 'ts_api_client'
              path: "web/api/"
          - task: Npm@1
            inputs:
              command: 'install'
              workingDir: 'web/'
          - task: Npm@1
            inputs:
              command: 'custom'
              workingDir: 'web/'
              customCommand: 'run build'