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

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-beta6/premake-5.0.0-beta6-windows.zip ; exit 0"
  - 7z x premake-5.0.0-beta6-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.1.12-stable/libevent-2.1.12-stable.tar.gz ; exit 0"
  - tar xf libevent-2.1.12-stable.tar.gz
  - move libevent-2.1.12-stable event
  
  - bash -c "curl --retry 5 --connect-timeout 30 --location --remote-header-name --remote-name https://www.lua.org/ftp/lua-5.4.7.tar.gz ; exit 0"
  - tar xf lua-5.4.7.tar.gz
  - move lua-5.4.7 lua
  
  - bash -c "curl --retry 5 --connect-timeout 30 --location --remote-header-name --remote-name https://www.sqlite.org/2025/sqlite-amalgamation-3490100.zip  ; exit 0"
  - 7z x sqlite-amalgamation-3490100.zip
  - move sqlite-amalgamation-3490100 sqlite3

  - git clone --depth=1 https://github.com/mercury233/irrlicht

before_build:
  - xcopy /E premake\* .
  - xcopy /E resource\* .
  - premake5 vs2022

configuration: Release
platform: x64

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

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

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

  # srvpro
  - git clone https://github.com/purerosefallen/ygopro-server
  - cd ygopro-server
  - ../node/npm ci
  - 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 '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 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-beta6-windows.zip
  - libevent-2.1.12-stable.tar.gz
  - lua-5.4.7.tar.gz
  - sqlite-amalgamation-3490100.zip
