language: rust

jobs:
  fast_finish: true
  include:
#    - os: windows
#      env: PYTHONPATH=C:\Python38
#      env: PATH="C:\Python38;$PATH"
#      rust:
#        - stable
#    - os: windows
#      env: PYTHONPATH=C:\Python38
#      env: PATH="C:\Python38;$PATH"
#      rust:
#        - nightly
    - os: linux
      dist: bionic
      rust:
        - stable
# Nightly build turned off until #1423 resolved
#    - os: linux
#      dist: bionic
#      rust:
#        - nightly
    - os: osx
      rust:
        - stable
    - os: osx
      rust:
        - nightly

cache:
  directories:
    - $TRAVIS_HOME/.cargo/
    - $TRAVIS_BUILD_DIR/target/debug/build
    - $TRAVIS_BUILD_DIR/target/debug/deps
    - $TRAVIS_BUILD_DIR/target/debug/incremental

before_cache:
  - rm -rf $TRAVIS_HOME/.cargo/registry/src

before_install:
  - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then choco install ninja; choco install python3 --params "/InstallAllUsers"; fi

script:
  - git diff-tree --check $(git hash-object -t tree /dev/null) HEAD
  - travis_wait 30 cargo build -j 2 --all
  - travis_wait 30 cargo test -j 2 --all

after_success:
  - |
    [ $TRAVIS_BRANCH = master ] &&
    [ $TRAVIS_PULL_REQUEST = false ] &&
    [ $TRAVIS_OS_NAME = linux ] &&
    travis_wait 30 cargo publish -j 2 --token ${CRATESIO_TOKEN} --manifest-path vk-sys/Cargo.toml
  - |
    [ $TRAVIS_BRANCH = master ] &&
    [ $TRAVIS_PULL_REQUEST = false ] &&
    [ $TRAVIS_OS_NAME = linux ] &&
    travis_wait 30 cargo publish -j 2 --token ${CRATESIO_TOKEN} --manifest-path vulkano/Cargo.toml
  - |
    [ $TRAVIS_BRANCH = master ] &&
    [ $TRAVIS_PULL_REQUEST = false ] &&
    [ $TRAVIS_OS_NAME = linux ] &&
    travis_wait 30 cargo publish -j 2 --token ${CRATESIO_TOKEN} --manifest-path vulkano-win/Cargo.toml
  - |
    [ $TRAVIS_BRANCH = master ] &&
    [ $TRAVIS_PULL_REQUEST = false ] &&
    [ $TRAVIS_OS_NAME = linux ] &&
    travis_wait 30 cargo publish -j 2 --token ${CRATESIO_TOKEN} --manifest-path vulkano-shaders/Cargo.toml
