branches:
  only:
    - master

environment:
  nodejs_version: "14"

  global:
    # Workaround for https://github.com/conda/conda-build/issues/636
    PYTHONIOENCODING: UTF-8
    CONDA_INSTALL_LOCN: "C:\\Miniconda35-x64"
    CMAKE_OPTIONS: ""
    CPP_TEST_OPTIONS: ""
    CHECK_GEN_CODE: 1

  matrix:
    - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
      CMAKE_VS_VERSION: "10 2010"
      CMAKE_OPTIONS: "-DFLATBUFFERS_BUILD_LEGACY=1 -DFLATBUFFERS_SKIP_MONSTER_EXTRA=ON"
      CHECK_GEN_CODE: 0

    - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
      CMAKE_VS_VERSION: "12 2013"
      CMAKE_OPTIONS: "-DFLATBUFFERS_SKIP_MONSTER_EXTRA=ON"
      CPP_TEST_OPTIONS: "--skip-monster-extra"

    - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
      CMAKE_VS_VERSION: "14 2015"

platform:
  - x86
  - x64

configuration:
  - Debug
  - Release

before_build:
  - cmake . -G"Visual Studio %CMAKE_VS_VERSION%" -DFLATBUFFERS_CODE_SANITIZE=1 %CMAKE_OPTIONS%
  # This cuts down on a lot of noise generated by xamarin warnings.
  - if exist "C:\Program Files (x86)\MSBuild\14.0\Microsoft.Common.targets\ImportAfter\Xamarin.Common.targets" del "C:\Program Files (x86)\MSBuild\14.0\Microsoft.Common.targets\ImportAfter\Xamarin.Common.targets"

build:
  project: ALL_BUILD.vcxproj
  verbosity: minimal

after_build:
  - python conan/appveyor/install.py
  - python conan/appveyor/build.py

install:
  - set PATH=%CONDA_INSTALL_LOCN%;%CONDA_INSTALL_LOCN%\scripts;%PATH%;
  - ps: Install-Product node $env:nodejs_version

test_script:
  - if [%CHECK_GEN_CODE%]==[1] (call py scripts/check_generate_code.py "%CPP_TEST_OPTIONS%")
  - "cd tests"
  - 7z a GeneratedMyGameCode.zip MyGame\
  - rem "---------------- C++ -----------------"
  - "cd .."
  - "%CONFIGURATION%\\flattests.exe"
  - rem "---------------- JS -----------------"
  - "node --version"
  - "npm install"
  - "npm run compile"
  - "cd tests"
  - "TypeScriptTest.bat"
  - rem "---------------- C# -----------------"
  # Have to compile this here rather than in "build" above because AppVeyor only
  # supports building one project??
  - "cd FlatBuffers.Test"
  - "dotnet new sln"
  - "dotnet sln add FlatBuffers.Test.csproj"
  - "nuget restore"
  - "mkdir .tmp"
  - "msbuild.exe /property:Configuration=Release;OutputPath=.tmp /verbosity:minimal FlatBuffers.Test.csproj"
  - ".tmp\\FlatBuffers.Test.exe"
  # Run tests with UNSAFE_BYTEBUFFER
  - "msbuild.exe /property:Configuration=Release;UnsafeByteBuffer=true;OutputPath=.tmp /verbosity:minimal FlatBuffers.Test.csproj"
  - ".tmp\\FlatBuffers.Test.exe"

artifacts:
  - path: $(CONFIGURATION)\flatc.exe
    name: flatc.exe
  - path: tests\GeneratedMyGameCode.zip
    name: GeneratedMyGameCode.zip
