version: '{branch}-{build}'
image: Visual Studio 2022
hosts:
  petstore.swagger.io: 127.0.0.1
install:
  - cmd: SET PATH=C:\maven\apache-maven-3.8.3\bin;C:\gradle\gradle-7.6\bin;%JAVA_HOME%\bin;%PATH%
  - cmd: SET MAVEN_OPTS=-Xmx4g
  - cmd: SET JAVA_OPTS=-Xmx4g
  - cmd: SET M2_HOME=C:\maven\apache-maven-3.8.3
  - cmd: java -version
  - cmd: dir/w
  - cmd: docker pull swaggerapi/petstore
  - cmd: docker run -d -e SWAGGER_HOST=http://petstore.swagger.io -e SWAGGER_BASE_PATH=/v2 -p 80:8080 swaggerapi/petstore 
  - ps: Start-Sleep -s 120
  - ps: $PSVersionTable.PSVersion
  - ps: Install-Module -Name Pester -Force -Scope CurrentUser
build_script:
  - dotnet --info
  # build C# aspnetcore 5.0 server
  #- dotnet build samples\server\petstore\aspnetcore-5.0\Org.OpenAPITools.sln
  ## build C# aspnetcore 3.1 server
  #- dotnet build samples\server\petstore\aspnetcore-3.1\Org.OpenAPITools.sln
  ## build C# aspnetcore 3.0 server
  #- dotnet build samples\server\petstore\aspnetcore-3.0\Org.OpenAPITools.sln
  ## build C# aspnetcore 2.2 server
  #- dotnet build samples\server\petstore\aspnetcore\Org.OpenAPITools.sln
  ## build C# API client (multiple frameworks)
  #- dotnet build samples\client\petstore\csharp\OpenAPIClientCoreAndNet47\Org.OpenAPITools.sln
  ## build C# API client (httpclient)
  #- dotnet build samples\client\petstore\csharp\OpenAPIClient-httpclient\Org.OpenAPITools.sln
  ## build C# API client (generichost)
  #- dotnet build samples\client\petstore\csharp\OpenAPIClient-generichost-netstandard2.0\Org.OpenAPITools.sln
  ## build C# API client (netcore)
  #- dotnet build samples\client\petstore\csharp\OpenAPIClient\Org.OpenAPITools.sln
  #- dotnet build samples\client\petstore\csharp\OpenAPIClientCore\Org.OpenAPITools.sln
  ## build C# API client (.net framework 4.7)
  #- dotnet build samples\client\petstore\csharp\OpenAPIClient-net47\Org.OpenAPITools.sln
  ## build C# API client (.net framework 4.8)
  #- dotnet build samples\client\petstore\csharp\OpenAPIClient-net48\Org.OpenAPITools.sln
  ## build C# API client (.net 5.0)
  #- dotnet build samples\client\petstore\csharp\OpenAPIClient-net5.0\Org.OpenAPITools.sln
  ## build C# API client (.net 5.0 with ConditionalSerialization)
  #- dotnet build samples\client\petstore\csharp\OpenAPIClient-ConditionalSerialization\Org.OpenAPITools.sln

test_script:
  # test c# API client (multiple frameworks)
  - dotnet test samples\client\petstore\csharp\OpenAPIClientCoreAndNet47\src\Org.OpenAPITools.Test\Org.OpenAPITools.Test.csproj
  # test c# API client (httpclient)
  - dotnet test samples\client\petstore\csharp\OpenAPIClient-httpclient\src\Org.OpenAPITools.Test\Org.OpenAPITools.Test.csproj
  # test c# API client (generichost)
  - dotnet test samples\client\petstore\csharp\OpenAPIClient-generichost-netstandard2.0\src\Org.OpenAPITools.Test\Org.OpenAPITools.Test.csproj
  # test c# API client (netcore)
  - dotnet test samples\client\petstore\csharp\OpenAPIClientCore\src\Org.OpenAPITools.Test\Org.OpenAPITools.Test.csproj
  #- dotnet test samples\client\petstore\csharp\OpenAPIClient\src\Org.OpenAPITools.Test\Org.OpenAPITools.Test.csproj
  # test C# API client (.net framework 4.7)
  - dotnet test samples\client\petstore\csharp\OpenAPIClient-net47\src\Org.OpenAPITools.Test\Org.OpenAPITools.Test.csproj
  # test C# API client (.net framework 4.8)
  - dotnet test samples\client\petstore\csharp\OpenAPIClient-net48\src\Org.OpenAPITools.Test\Org.OpenAPITools.Test.csproj
  # test C# API client (.net 5.0)
  - dotnet test samples\client\petstore\csharp\OpenAPIClient-net5.0\src\Org.OpenAPITools.Test\Org.OpenAPITools.Test.csproj
  # test C# API Client using conditional-serialization
  - dotnet test samples\client\petstore\csharp\OpenAPIClient-ConditionalSerialization\src\Org.OpenAPITools.Test\Org.OpenAPITools.Test.csproj

### TODO: Execute all generators via powershell or other
  # generate all petstore clients
  # - .\bin\windows\run-all-petstore.cmd
  # generate all petstore clients (openapi3)
  # - .\bin\openapi3\windows\run-all-petstore.cmd

  # test ps petstore
  - ps: |
      cd samples\client\petstore\powershell\
      .\CIRunTest.ps1
cache:
  - C:\maven\
  - C:\gradle\
  - C:\Users\appveyor\.m2
