language: rust
sudo: false
dist: trusty
rust: nightly
cache:
    cargo: true
    directories:
    - $HOME/openssl
matrix:
    include:
    - env: TARGET=x86_64-unknown-linux-gnu TARGET_DESC=linux-x86_64
    - env: TARGET=i686-unknown-linux-gnu TARGET_DESC=linux-i686 BUILD_OPENSSL_VERSION=1.0.2k
      addons:
          apt:
              packages:
              - gcc-multilib
              - g++-multilib
              - g++-4.8-multilib
    # - env: TARGET=x86_64-unknown-linux-gnu TEST_ONLY=true
    # - env: TARGET=i686-unknown-linux-musl DEPLOY_ONLY=true TARGET_DESC=linux-i686
    # - env: TARGET=x86_64-unknown-linux-musl DEPLOY_ONLY=true TARGET_DESC=linux-x86_64
    # - env: TARGET=i686-apple-darwin DEPLOY_ONLY=true TARGET_DESC=apple-i686
    #   os: osx
    - env: TARGET=x86_64-apple-darwin TARGET_DESC=apple-x86_64
      os: osx
before_script:
- |
  # set RUN_TEST
  if [[ (($TEST_ONLY = true || -z $DEPLOY_ONLY) && -z $TRAVIS_TAG) ]]; then
      RUN_TEST=true
      echo "tests enabled"
  else
      RUN_TEST=false
  fi
- |
  # set RUN_DEPLOY
  if [[ ($DEPLOY_ONLY = true || -z $TEST_ONLY) && -n $TRAVIS_TAG ]]; then
      RUN_DEPLOY=true
      echo "deploy enabled"
  else
      RUN_DEPLOY=false
  fi
- export PATH="$PATH:$HOME/.cargo/bin"
- |
  # install target toolchain
  if $RUN_TEST || $RUN_DEPLOY; then
      rustup target add "$TARGET" || true
  fi
- c++ --version
- |
  # build openssl
  if [ -n "$BUILD_OPENSSL_VERSION" ]; then
      echo "building openssl"
      ./scripts/build.sh
  fi
- |
  # set openssl configuration
  if [ -n "${BUILD_OPENSSL_VERSION}" -a -d "$HOME/openssl/lib" ]; then
      echo "Building using openssl-${BUILD_OPENSSL_VERSION}"
      export OPENSSL_DIR="${HOME}/openssl"
      export LD_LIBRARY_PATH="${HOME}/openssl/lib:${LD_LIBRARY_PATH}"
      export PATH="${HOME}/openssl/bin:${PATH}"
  fi
script:
- |
  # cargo build
  if $RUN_TEST; then
      cargo build --target "$TARGET" --verbose -j 1
  fi
- |
  # cargo test
  if $RUN_TEST; then
      cargo test --target "$TARGET" -p screeps-rs-network --verbose -j 1
      cargo test --target "$TARGET" -p screeps-rs-ui --verbose -j 1
  fi
- |
  # cargo build --release
  if $RUN_DEPLOY; then
      cargo build --target "$TARGET" -p screeps-rs --verbose --release -j 1
  fi
before_deploy:
- cargo build --target "$TARGET" --verbose --release -j 1
- tar -C "target/$TARGET/release/" -czf "${TRAVIS_TAG}-${TARGET_DESC}.tar.gz" "screeps-rs-client"
deploy:
    provider: releases
    api_key:
        secure: rW0srqf05xxlzsgiH0+4HfycQQUWHWldBj5PKno+GpVXF/wPvAekHmhKzq41WC+/j7WpQnLMzI3LDMR9ZLnXjvv5UmOPeN/G90q8rHPocBHk9qTPA24CNNR5/aW26GuQygWhOwItkbdI41E9rQ6DmqnOehw/eVt6XcFax9Bs2X4loDOL6++QuH4IkloFyegQVJxGLCO4wUnKqjNej7dR+EJSlNgHXzpuRpAvpASvQAdf7gi23PFokuMn/sJrqkPArwDWsb1+XRlwVP9GZkOn6aRZxmlb9ijx8cJ3IyD/DqwMT8L8lxGL4qY57W6tL548x1fbEaiMMAEbCjjukXIMuOU1sxR0ZNkWLWVVBgISlAN1eOuFTMZOvexaF8eU5FvdLAKWbH5qWG02p01dNQmJr/1tdfQyWpmr4rskUGTqUNqa6owJQ7d1aTWt26Yo9ZDnun9YpyY1xg6upWU+wi+UVkX/4kSl9TX5HEmSMsJ8ybe4vYbS2KZKDJr5BcUzVORraPBEq0hibyiQNoRD8vaLwloSbvfRLAE2/rSbDtBk2TSwbP5/q/VlSqEN2saNgco8TSzzdDOYdUUETgSHBQO1VPe11NK4cZDF1cBWWQa31t3HpfCVXGG6gmRLkZn/vfCy5qJZNs38Dtq+fPHxZ+EJrPkydJP4v+9eftBHKkjNI0M=
    file: "${TRAVIS_TAG}-${TARGET_DESC}.tar.gz"
    on:
        repo: daboross/screeps-rs
        tags: true
        condition: ("$DEPLOY_ONLY" = true || -z "$TEST_ONLY")
    skip_cleanup: true