image: Visual Studio 2019
# branches:
#  only:
# - master
version: '{build}'
cache:
  - c:\Tools\vcpkg\installed
install:
  - cd c:\tools\vcpkg
  - vcpkg integrate install
  - vcpkg install capnproto
  - cd %APPVEYOR_BUILD_FOLDER%
  - dotnet tool install -g nbgv
init:
  # Good practise, because Windows line endings are different from Unix/Linux ones
  - cmd: git config --global core.autocrlf true
before_build:
  - cmd: nbgv cloud
  - cmd: dotnet --version
  - cmd: msbuild -ver
  - cmd: dotnet restore ./Capnp.Net.Runtime/Capnp.Net.Runtime.csproj --verbosity m
  - cmd: dotnet restore ./Capnp.Net.Runtime.Core21/Capnp.Net.Runtime.Core21.csproj --verbosity m
  - cmd: dotnet restore ./Capnp.Net.Runtime.Tests/Capnp.Net.Runtime.Tests.Std20.csproj --verbosity m
  - cmd: dotnet restore ./Capnp.Net.Runtime.Tests.Core21/Capnp.Net.Runtime.Tests.Core21.csproj --verbosity m
  - cmd: dotnet restore ./CapnpC.CSharp.Generator/CapnpC.CSharp.Generator.csproj --verbosity m  
  - cmd: dotnet restore ./CapnpC.CSharp.Generator.Tests/CapnpC.CSharp.Generator.Tests.csproj --verbosity m  
  - cmd: dotnet restore ./CapnpC.CSharp.MsBuild.Generation/CapnpC.CSharp.MsBuild.Generation.csproj --verbosity m  
  - cmd: dotnet restore ./CapnpC.CSharp.MsBuild.Generation.Tests/CapnpC.CSharp.MsBuild.Generation.Tests.csproj --verbosity m  
  - cmd: dotnet restore ./capnpc-csharp/capnpc-csharp.csproj --verbosity m  
build_script:
  - cmd: msbuild ./Capnp.Net.sln /p:Configuration="Debug"
  - cmd: msbuild ./Capnp.Net.sln /p:Configuration="Release"
  - cmd: msbuild ./CapnpCompatTest.sln /p:Configuration="Debug"
  - cmd: msbuild ./CapnpCompatTest.sln /p:Configuration="Release"
  - ps: scripts\capnpc-csharp-pack.ps1
after_build:
  # For once the build has completed
artifacts:
 - path: bin\Release\Capnp.Net.Runtime.*.nupkg
   name: Capnp.Net.Runtime
   type: NuGetPackage
 - path: bin\Release\CapnpC.CSharp.MsBuild.Generation.*.nupkg
   name: CapnpC.CSharp.MsBuild.Generation
   type: NuGetPackage
 - path: chocolatey\install\capnpc-csharp-win-x86.*.nupkg
   name: capnpc-csharp-win-x86
   type: NuGetPackage
 - path: chocolatey\install\capnpc-csharp.*-deprecated.nupkg
   name: capnpc-csharp-deprecated
   type: NuGetPackage
 - path: capnpc-csharp\nupkg\*.nupkg
   name: capnpc-csharp
   type: NuGetPackage
test_script:
  - cmd: |
      nbgv get-version -v NuGetPackageVersion >> version.txt
      set /P VERSION=< version.txt
      vstest.console /logger:Appveyor /inIsolation CapnpC.CSharp.Generator.Tests\bin\Release\netcoreapp3.0\CapnpC.CSharp.Generator.Tests.dll
      choco install capnproto --source="https://chocolatey.org/api/v2" --force -y
      cd %APPVEYOR_BUILD_FOLDER%\capnpc-csharp
      dotnet tool install --global --add-source ./nupkg capnpc-csharp --version %VERSION%
      cd %APPVEYOR_BUILD_FOLDER%\install-test
      compile-test
      cd %APPVEYOR_BUILD_FOLDER%
      vstest.console /logger:Appveyor /inIsolation CapnpC.CSharp.Generator.Tests\bin\Release\netcoreapp3.0\CapnpC.CSharp.Generator.Tests.dll
      dotnet tool uninstall --global capnpc-csharp
      cd %APPVEYOR_BUILD_FOLDER%\install-test
      notinstalled-test
      cd %APPVEYOR_BUILD_FOLDER%\chocolatey\install
      choco install capnpc-csharp-win-x86 --source=".;https://chocolatey.org/api/v2" --force -y --version %VERSION% --pre
      cd %APPVEYOR_BUILD_FOLDER%\install-test
      compile-test
      choco uninstall capnpc-csharp-win-x86 -y
      notinstalled-test
      cd %APPVEYOR_BUILD_FOLDER%
      vstest.console /logger:Appveyor /inIsolation CapnpC.CSharp.MsBuild.Generation.Tests\bin\Release\netcoreapp3.0\CapnpC.CSharp.MsBuild.Generation.Tests.dll
      msbuild -t:restore ./MsBuildGenerationTest/MsBuildGenerationTest.csproj /p:Configuration="Debug" /p:PackageReferenceVersion="%VERSION%"
      msbuild ./MsBuildGenerationTest/MsBuildGenerationTest.sln /p:Configuration="Debug" /p:PackageReferenceVersion="%VERSION%"
      vstest.console /logger:Appveyor /inIsolation Capnp.Net.Runtime.Tests\bin\Debug\net471\Capnp.Net.Runtime.Tests.Std20.dll
      vstest.console /logger:Appveyor /inIsolation Capnp.Net.Runtime.Tests\bin\Release\net471\Capnp.Net.Runtime.Tests.Std20.dll
      vstest.console /logger:Appveyor /inIsolation Capnp.Net.Runtime.Tests.Core21\bin\Debug\netcoreapp2.1\Capnp.Net.Runtime.Tests.Core21.dll
      vstest.console /logger:Appveyor /inIsolation Capnp.Net.Runtime.Tests.Core21\bin\Release\netcoreapp2.1\Capnp.Net.Runtime.Tests.Core21.dll
on_finish :
  # any cleanup in here
deploy:
  - provider: Environment
    name: GitHub Releases
    description: 'Deployed from CI.'
    artifact: /.*\.nupkg/
    draft: true
    prerelease: true
    force_update: true
    on:
      APPVEYOR_REPO_TAG: true