pull_requests:
  # Avoid building after pull requests. Shall we disable this option?
  do_not_increment_build_number: true

# Only build whenever we add tags to the repo.
skip_non_tags: true

environment:

  matrix:

  # List of python versions we want to work with.
    - PYTHON: "C:\\Python37"
      PYTHON_VERSION: "3.7.x" # currently 2.7.9
      PYTHON_ARCH: "32"

  # perhaps we may enable this one in future?
#    - PYTHON: "C:\\Python37-x64"
#      PYTHON_VERSION: "3.7.x" # currently 2.7.9
#      PYTHON_ARCH: "64"

# This is important so we will retrieve everything in submodules as opposed to default method.
clone_script:
  - cmd: >-
      git clone -q --branch=%APPVEYOR_REPO_BRANCH% https://github.com/%APPVEYOR_REPO_NAME%.git %APPVEYOR_BUILD_FOLDER%
      && cd %APPVEYOR_BUILD_FOLDER%
      && git checkout -qf %APPVEYOR_REPO_COMMIT%
      && git submodule update --init --recursive

install:
  # If there is a newer build queued for the same PR, cancel this one.
  # The AppVeyor 'rollout builds' option is supposed to serve the same
  # purpose but it is problematic because it tends to cancel builds pushed
  # directly to master instead of just PR builds (or the converse).
  # credits: JuliaLang developers.
  - ps: if ($env:APPVEYOR_PULL_REQUEST_NUMBER -and $env:APPVEYOR_BUILD_NUMBER -ne ((Invoke-RestMethod `
        https://ci.appveyor.com/api/projects/$env:APPVEYOR_ACCOUNT_NAME/$env:APPVEYOR_PROJECT_SLUG/history?recordsNumber=50).builds | `
        Where-Object pullRequestId -eq $env:APPVEYOR_PULL_REQUEST_NUMBER)[0].buildNumber) { `
          throw "There are newer queued builds for this pull request, failing early." }
#  - ECHO "Filesystem root:"
#  - ps: "ls \"C:/\""

  # Check that we have the expected version and architecture for Python
  - "SET PATH=%PYTHON%;%PYTHON%\\Scripts;%PATH%"
  - "python --version"
  - "python -c \"import struct; print(struct.calcsize('P') * 8)\""

  # Upgrade to the latest version of pip to avoid it displaying warnings
  # about it being out of date.
  - "python -m pip install --upgrade pip setuptools"

  # Install the build dependencies of the project. If some dependencies contain
  # compiled extensions and are not provided as pre-built wheel packages,
  # pip will build them from source using the MSVC compiler matching the
  # target Python version and architecture
  - "%CMD_IN_ENV% pip install -r requirements.txt"
  - "%CMD_IN_ENV% pip install pyenchant"

build_script:
  # Build documentation at first, so setup.py won't fail when copying everything.
  - "cd doc"
  # Import documentation before building, so strings.py will be created.
  - "%CMD_IN_ENV% python documentation_importer.py"
  # build doc from src folder so it will generate result files right there.
  - "cd ..\\src"
  - "%CMD_IN_ENV% python ..\\doc\\generator.py"
  # Build distributable files.
  - "%CMD_IN_ENV% python setup.py build"
  - "cd dist"
  # Zip it all.
  - cmd: 7z a ..\..\snapshot.zip *

artifacts:
  - path: snapshot.zip

deploy:
- provider: FTP
  host: twblue.es
  protocol: ftp
  beta: true
  username: twblue.es
  password:
    secure: lQZqpYRnHf4LLVOg0C42NQ==
  folder: 'web/pubs'