environment:
  CYG_MIRROR: http://cygwin.mirror.constant.com
  CYG_PACKAGES: make,gcc-core,libiconv-devel
  matrix:
    - CYG_ROOT: C:\cygwin64
      CYG_CACHE: C:\cygwin64\var\cache\setup
      CYG_SETUP: setup-x86_64.exe
      BASH: C:\cygwin64\bin\bash
      CC: gcc
    - CYG_ROOT: C:\cygwin
      CYG_CACHE: C:\cygwin\var\cache\setup
      CYG_SETUP: setup-x86.exe
      BASH: C:\cygwin\bin\bash
      CC: gcc
    - MSYSTEM: MINGW64
      MSYS_CACHE: C:\msys64\var\cache\pacman\pkg
      BASH: C:\msys64\usr\bin\bash
      CC: gcc
    - MSYSTEM: MINGW32
      MSYS_CACHE: C:\msys64\var\cache\pacman\pkg
      BASH: C:\msys64\usr\bin\bash
      CC: gcc

# if we have too many commits at the same time, we might need to download more than just the last commit for appveyor to succeed
# otherwise we get the error: "fatal: reference is not a tree <commit>"
clone_depth: 15

init:
  # Don't try to convert line endings to Win32 CRLF
  - git config --global core.autocrlf input

install:
  - ps: if (Test-Path Env:\CYG_ROOT) { Start-FileDownload "https://cygwin.com/$env:CYG_SETUP" -FileName "$env:CYG_SETUP" }
  - if defined CYG_ROOT (%CYG_SETUP% --quiet-mode --no-shortcuts --only-site --root "%CYG_ROOT%" --site "%CYG_MIRROR%" --local-package-dir "%CYG_CACHE%" --packages "%CYG_PACKAGES%" --upgrade-also)
  - if defined MSYSTEM (%BASH% -lc "pacman -Suuy --noconfirm")
  # the following line is not a duplicate line:
  # it is necessary to upgrade the MSYS base files and after that all the packages
  # the 2 separate commands/lines are required because a new shell is necessary for each step
  - if defined MSYSTEM (%BASH% -lc "pacman -Suuy --noconfirm")

build_script:
  - if defined BASH (%BASH% -lc "cd $(cygpath ${APPVEYOR_BUILD_FOLDER}) && git submodule update --init && make")

test_script:
  # some file globbing tests
  #  1. hash file should not exist and therefore hashcat should complain (if it does not there might be a problem)
  #  2. hash file should expand to example0.hash and succeed
  - ps: >-
      & $env:BASH -lc "cd '$env:APPVEYOR_BUILD_FOLDER' && ./hashcat.exe -m 0 --show *file_not_found.hash" 2>&1 | out-null

      if ($LastExitCode -eq 0)
      {
        throw "test failed"
      }

      & $env:BASH -lc "cd '$env:APPVEYOR_BUILD_FOLDER' && ./hashcat.exe -m 0 --show *ple0.hash"