language: rust
cache: cargo

rust:
  - stable
  - beta
  - nightly

  # Prevent accidentally breaking older Rust versions
  - 1.17.0
  - 1.18.0

matrix:
  allow_failures:
    - rust: nightly

env:
  global:
    - secure: "SsepHEYRmW9ee3RhxPpqGuPigZINFfA/yOwUJFseQt4t+Zs90r1xdl3Q8eDfPlnvBsL7Rd0QQrFDO7JUaimVLlgQkUnrl62o0CYzkodp+qtocyAHS00W6WTqi8Y6E6KBxPshCl03dRLaySUfx5TqTLTIHkJ0G6vDW35k7hRrA3221lRphs5rrpvAZ21pqsDsNLH3HVo792L6A0kOtBa3ocw1pgHLxnBbArIViu2htUuFvY/TgsmVbAdlow0efw/xkcJ/p0/r5q7igLek6Iqk8udfRc7CktvoiFQ2vUnhtNtQu/zYll3Q7OUx5d+w5lhbzz2QINmsezBEisH9k1haL7dMviLPp0pn4WZed60KovO0Iqfgjy1utTaKvJVfNWYsgkfU8c9a/z2rcZOKwXNKQW2ptBrtVjaB9dk7eMoyuFCDZwNtKqvG+ZKmvMpun+R8mmx+buOmN8Vlf5ygIoGxz3nbEtlLYGVTXHfdXXqRkFIwtiYVJEO7SLRKT9pbx1E++ARsi2+y8bXJT4e4z0osYMq9EsiFUpw3J2gcshrgseqkB7UgCZ3SXuitJnJNfDAU3a3nwwS/JiAunZMNnC4rKUBbl7WbTB4Cpw7EgVOlCqcyyzlkNl3xabLzTFzLOfSHLTVX5FmGNsD21vBoS5/8ejftx9wuV3rGHxuO3i3+A3k="

script:
  # Build library standalone, with Iron, and with Rocket integrations enabled, respectively
  - cargo build --all --verbose
  - cargo build --all --verbose --features iron-handlers
  - |
    if [ "$TRAVIS_RUST_VERSION" = "nightly" ]; then
      cargo build --all --verbose --features rocket-handlers
    fi

  # Build example binaries; first Iron, then Rocket examples
  - cargo build --all --verbose --example server --features "iron-handlers expose-test-schema"
  - |
    if [ "TRAVIS_RUST_VERSION" = "nightly" ]; then
      cargo build --all --verbose --example rocket-server --features "rocket-handlers expose-test-schema"
    fi

  # Run all tests for the base library and available integrations
  - export TEST_FEATURES="iron-handlers expose-test-schema"
  - |
    if [ "$TRAVIS_RUST_VERSION" = "nightly" ]; then
      export TEST_FEATURES="$TEST_FEATURES rocket-handlers rocket/testing"
    fi

  - cargo test --all --verbose --features "$TEST_FEATURES"


before_deploy:
  - rm -rf target/package/
  - cargo package --verbose

deploy:
  provider: releases
  api_key:
    secure: "qsMOCWmD3+y30loMSqeEZrNvy2NQaIi4TixRtu7cZyOZwal4nzHJPhozDjbm3Po59s8lH7JaIuzpVJ62bfI/BHk+ZjXU+q93cHrVqiDtf6tScOMn6TYnVcF4Af36dYKNgjOXufT01cHQXWTBUW5oEYaL7z69d7UYFhYnFo54Dd5YA5Y1vTPFEC/nLD7wdnedG1y6V0vAkXQ0tgMauUx6JJ6iids4QVTT6wIFiZDV0vilHqRNjM9WkFTS9JQHsOwdLN71Ry1rxm4/PukUm4Ly/Ouup2i0buJa0FdZW/1Ym1Db4CitvrnulCjSahkNMPjRaQDiuYCuEq+PiVu0n6gucNS/WlC41qLl6TGjAWGlKKCQz2KnBweGYtghLuUujBPCLpkMEDf/XH+sDfiV6S5Fe6MbgcF/zGccqXwh4LFh1MIU389ZX6UDukF3Ovx5xsE8ha84RyNgzDfT1if/vAXJXaPODxk5/KKP/pvUpvQR2hGz6KhzMTGT/WPN49uW/WAHUEze2ZwuqVH7u8JubtHuGif1PReUnGzEK3o7CUb+Cd4/X9tnKd8cJxV2qU7MFORZbmZQ5qk7VcBQ4ur3uGpenQZQyAdTEgJaznLxjOW3brZ/JDe56QrAi6WzBGrfd26kgg2GmdQq7TACSryjAD4oH6hM4JAmYpPYLn8hXlzO4FE="
  file: target/package/juniper-$TRAVIS_TAG.crate
  skip_cleanup: true
  on:
    tags: true
    branch: master
    condition: "$TRAVIS_RUST_VERSION = stable"

after_deploy:
  - cargo publish --token "$CRATES_IO_TOKEN"

before_cache:
  rm -rf target/debug/juniper*
  rm -rf target/debug/libjuniper*
  rm -rf target/debug/.fingerprint/juniper*

  rm -rf target/release/juniper*
  rm -rf target/release/libjuniper*
  rm -rf target/release/.fingerprint/juniper*

  rm -rf target/package/