version: '{build}'
image: Visual Studio 2017

skip_tags: true

install:
  - git submodule update --init --recursive

  # environment and system dependency
  - bash -c "curl --retry 5 --connect-timeout 30 --location --remote-header-name --remote-name https://github.com/premake/premake-core/releases/download/v5.0.0-alpha13/premake-5.0.0-alpha13-windows.zip ; exit 0"
  - 7z x premake-5.0.0-alpha13-windows.zip
  
  - bash -c "curl --retry 5 --connect-timeout 30 --location --remote-header-name --remote-name https://github.com/libevent/libevent/releases/download/release-2.0.22-stable/libevent-2.0.22-stable.tar.gz ; exit 0"
  - tar xf libevent-2.0.22-stable.tar.gz
  - move libevent-2.0.22-stable event
  - xcopy /E event\WIN32-Code event\include
  
  - bash -c "curl --retry 5 --connect-timeout 30 --location --remote-header-name --remote-name https://www.sqlite.org/2018/sqlite-amalgamation-3240000.zip ; exit 0"
  - 7z x -y sqlite-amalgamation-3240000.zip
  - move sqlite-amalgamation-3240000 sqlite3

  # let premake happy
  - xcopy /E premake\* .
    
  # premake
  - premake5 vs2017
  
configuration: Release

build: 
    project: build/ygo.sln
    parallel: true

after_build:
  - ps: move bin\release\ygopro.exe .

  # redis
  - bash -c "curl --retry 5 --connect-timeout 30 --location --remote-header-name --remote-name https://github.com/MicrosoftArchive/redis/releases/download/win-3.2.100/Redis-x64-3.2.100.zip ; exit 0"
  - 7z x -y -oredis Redis-x64-3.2.100.zip

  # nodejs
  - bash -c "curl --retry 5 --connect-timeout 30 --location --remote-header-name --remote-name https://nodejs.org/dist/v10.15.3/node-v10.15.3-win-x64.zip ; exit 0"
  - 7z x -y node-v10.15.3-win-x64.zip
  - mv node-v10.15.3-win-x64 node

  # srvpro
  - git clone https://github.com/purerosefallen/ygopro-server
  - cd ygopro-server
  - ../node/npm install
  - bash -c "curl --retry 5 --connect-timeout 30 --location --remote-header-name --remote-name https://github.com/purerosefallen/windbot/releases/download/latest/WindBot.7z ; exit 0"
  - 7z x -y WindBot.7z
  - rm -rf Bot.exe bot.conf
  - mv WindBot windbot_
  - mv windbot_ windbot # Windows NTFS does not support case sensitive, so renaming the folder twice.
  - rm -rf WindBot.7z
  - cp  ../cards.cdb windbot/
  - mkdir ygopro decks_save
  - cp -rf ../ygopro.exe ygopro/
  - mv ../cards.cdb ygopro/
  - mv ../lflist.conf ygopro/
  - mv ../script ygopro/
  - cd ygopro
  - mkdir gframe
  - cp -rf ../../gframe/game.cpp gframe/ # Toss game.cpp in for version detection
  # - cp -rf config_build config
  - cd ../..

  # start script
  - bash -c "echo '@echo off' >> run.bat ; echo 'start redis/redis-server.exe' >> run.bat ; echo 'cd ygopro-server/windbot' >> run.bat ; echo 'start WindBot.exe servermode=true serverport=2399' >> run.bat ; echo 'cd ..' >> run.bat ; echo 'start ../node/node.exe ygopro-server.js' >> run.bat"
  - 7z a -mx9 -xr!.git* ygopro-server-win.zip node redis ygopro-server run.bat


test: off

artifacts:
  - path: ygopro.exe
    name: ygopro server mode
  - path: ygopro-server-win.zip
    name: Windows version of SRVPro

deploy:
  release: win
  description: 'Automatic build commit $(APPVEYOR_REPO_COMMIT) $(APPVEYOR_REPO_COMMIT_TIMESTAMP)'
  provider: GitHub
  force_update: true
  auth_token:
    secure: EQ9miMjfX/QAoBvgc6D+JLmHatLyxOEKZ/uo68QijxWW5Gp4MzB/pOH9+u2GlDVO
  on:
    branch: server

cache:
  - premake-5.0.0-alpha13-windows.zip
  - libevent-2.0.22-stable.tar.gz
  - freetype-2.9.1.tar.bz2
  - irrlicht-1.8.4.zip
  - sqlite-amalgamation-3240000.zip
