version: '{branch}-{build}'

# Do not build on tags (GitHub only)
skip_tags: true

image: Visual Studio 2019

branches:
  except:  # blacklist
    - coverity_scan

environment:
  REPO_DIR: &REPO_DIR c:\qbittorrent
  CACHE_DIR: &CACHE_DIR c:\qbt_cache

  QBT_VER_URL: https://builds.shiki.hu/appveyor/version
  QBT_LIB_URL: https://builds.shiki.hu/appveyor/qbt_libraries.7z

# project directory
clone_folder: *REPO_DIR

# cache size should < 100MB (after compressing with fastest option):
# see: https://www.appveyor.com/docs/build-cache#save-update-cache-before-build-finishes
cache:
  - *CACHE_DIR

clone_depth: 50

install:
  # check if library needs update
  - appveyor DownloadFile "%QBT_VER_URL%" -FileName "c:\version_new" && SET /P newVersion=<"c:\version_new"
  - IF EXIST "%CACHE_DIR%\version" (SET /P oldVersion=<"%CACHE_DIR%\version")
  - IF NOT EXIST "%CACHE_DIR%\version" (SET updateCache=1)
  - IF NOT "%oldVersion%" == "%newVersion%" (SET updateCache=1)
  # update library
  - IF "%updateCache%" == "1" (ECHO "--- Will redownload libraries ---" &&
      RMDIR /S /Q "%CACHE_DIR%" & MKDIR "%CACHE_DIR%" &&
      appveyor DownloadFile "%QBT_LIB_URL%" -FileName "c:\qbt_lib.7z" && 7z x "c:\qbt_lib.7z" -o"%CACHE_DIR%" > nul &&
      COPY "c:\version_new" "%CACHE_DIR%\version")
  # Qt stay compressed in cache
  - 7z x "%CACHE_DIR%\qt5_32.7z" -o"c:\qbt" > nul

before_build:
  # setup env
  - CALL "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars32.bat"
  - SET PATH=%PATH%;c:\qbt\qt5_32\bin;%CACHE_DIR%\jom;
  # setup project
  - COPY /Y "%CACHE_DIR%\conf.pri" "%REPO_DIR%"
  # workarounds
  - MKLINK /J "c:\qbt\base" "%CACHE_DIR%\base"

build_script:
  - cd "%REPO_DIR%"
  # scan only as lupdate is prone to hang
  - lupdate -extensions c,cpp,h,hpp,ui .
  - qmake qbittorrent.pro && cd src && qmake src.pro
  - jom -j2 -f Makefile.Release

test: off
