name: $(Date:yyyyMMdd)$(Rev:.r)

variables:
- name: TestProjects
  value: 'tests/**/*Tests.csproj'
- name: RestoreBuildProjects
  value: 'Jellyfin.Server/Jellyfin.Server.csproj'
- name: DotNetSdkVersion
  value: 5.0.100

pr:
  autoCancel: true

trigger:
  batch: true
  branches:
    include:
      - '*'
  tags:
    include:
      - 'v*'

jobs:
- ${{ if not(startsWith(variables['Build.SourceBranch'], 'refs/tags/v')) }}:
  - template: azure-pipelines-main.yml
    parameters:
      LinuxImage: 'ubuntu-latest'
      RestoreBuildProjects: $(RestoreBuildProjects)

- ${{ if not(or(startsWith(variables['Build.SourceBranch'], 'refs/tags/v'), startsWith(variables['Build.SourceBranch'], 'refs/heads/master'))) }}:
  - template: azure-pipelines-test.yml
    parameters:
      ImageNames:
        Linux: 'ubuntu-latest'
        Windows: 'windows-latest'
        macOS: 'macos-latest'
        
- ${{ if or(startsWith(variables['Build.SourceBranch'], 'refs/tags/v'), startsWith(variables['Build.SourceBranch'], 'refs/heads/master')) }}:
  - template: azure-pipelines-test.yml
    parameters:
      ImageNames:
        Linux: 'ubuntu-latest'

- ${{ if not(or(startsWith(variables['Build.SourceBranch'], 'refs/tags/v'), startsWith(variables['Build.SourceBranch'], 'refs/heads/master'))) }}:
  - template: azure-pipelines-abi.yml
    parameters:
      Packages:
        Naming:
          NugetPackageName: Jellyfin.Naming
          AssemblyFileName: Emby.Naming.dll
        Controller:
          NugetPackageName: Jellyfin.Controller
          AssemblyFileName: MediaBrowser.Controller.dll
        Model:
          NugetPackageName: Jellyfin.Model
          AssemblyFileName: MediaBrowser.Model.dll
        Common:
          NugetPackageName: Jellyfin.Common
          AssemblyFileName: MediaBrowser.Common.dll
      LinuxImage: 'ubuntu-latest'

- ${{ if or(startsWith(variables['Build.SourceBranch'], 'refs/tags/v'), startsWith(variables['Build.SourceBranch'], 'refs/heads/master')) }}:
  - template: azure-pipelines-package.yml

- ${{ if or(startsWith(variables['Build.SourceBranch'], 'refs/tags/v'), startsWith(variables['Build.SourceBranch'], 'refs/heads/master')) }}:
  - template: azure-pipelines-api-client.yml