jobs:
- job: Build
  displayName: 'Build'

  strategy:
    matrix:
      Development:
        BuildConfiguration: development
      Production:
        BuildConfiguration: production

  pool:
    vmImage: 'ubuntu-latest'

  steps:
  - task: NodeTool@0
    displayName: 'Install Node'
    inputs:
      versionSpec: '16.x'

  - task: Cache@2
    displayName: 'Cache node_modules'
    inputs:
      key: 'npm | package-lock.json'
      path: 'node_modules'

  - script: 'npm ci --no-audit'
    displayName: 'Install Dependencies'

  - script: 'npm run build:development'
    displayName: 'Build Development'
    condition: eq(variables['BuildConfiguration'], 'development')

  - script: 'npm run build:production'
    displayName: 'Build Production'
    condition: eq(variables['BuildConfiguration'], 'production')

  - script: 'test -d dist'
    displayName: 'Check Build'

  - script: 'mv dist jellyfin-web'
    displayName: 'Rename Directory'

  - task: ArchiveFiles@2
    displayName: 'Archive Directory'
    inputs:
      rootFolderOrFile: 'jellyfin-web'
      includeRootFolder: true
      archiveFile: 'jellyfin-web-$(BuildConfiguration)'

  - task: PublishPipelineArtifact@1
    displayName: 'Publish Release'
    inputs:
      targetPath: '$(Build.SourcesDirectory)/jellyfin-web-$(BuildConfiguration).zip'
      artifactName: 'jellyfin-web-$(BuildConfiguration)'
