sudo: false
language: rust
matrix:
  fast_finish: true
  include:
    - rust: nightly
    - rust: nightly
      os: osx
    - rust: beta
    - rust: beta
      os: osx
    - rust: stable
    - rust: stable
      os: osx
  allow_failures:
    - rust: nightly

before_cache:
  # Travis can't cache files that are not readable by "others"
  - chmod -R a+r $HOME/.cargo

before_install:
  # install kcov
  - >
    if [ ! -d "$HOME/.kcov/bin" ]; then
      wget https://github.com/SimonKagstrom/kcov/archive/master.tar.gz &&
      tar xzf master.tar.gz && mkdir kcov-master/build && cd kcov-master/build &&
      cmake -DCMAKE_INSTALL_PREFIX:PATH=$HOME/.kcov .. && make && make install && cd ../..
    fi
  - export PATH=$HOME/.kcov/bin:$PATH

script:
  - cargo build

cache:
  cargo: true
  apt: true
  directories:
  - target/debug/deps
  - target/debug/build

addons:
  apt:
    packages:
      - libcurl4-openssl-dev
      - libelf-dev
      - libdw-dev
      - binutils-dev
      - libiberty-dev

after_success:
  - '[ $TRAVIS_RUST_VERSION = stable ] &&
    [ $TRAVIS_BRANCH = master ] &&
    [ $TRAVIS_PULL_REQUEST = false ] &&
    (ls target/debug &&
    RUSTFLAGS="-C link-dead-code" cargo test --no-run &&
    for file in target/debug/atty-*; do
       if [[ "${file: -2}" != ".d" ]]; then
         mkdir -p "target/cov/$(basename $file)";
         kcov --exclude-pattern=/.cargo,/usr/lib --verify "target/cov/$(basename $file)" "$file";
       fi;
    done &&
    kcov --coveralls-id=$COVERALLS_REPO_TOKEN --merge target/cov target/cov/* &&
    echo "covered") || true'
  - '[ $TRAVIS_RUST_VERSION = stable ] &&
    [ $TRAVIS_BRANCH = master ] &&
    [ $TRAVIS_PULL_REQUEST = false ]
    && cargo doc --no-deps &&
    echo "<meta http-equiv=refresh content=0;url=`echo $TRAVIS_REPO_SLUG | cut -d / -f 2`/index.html>" > target/doc/index.html &&
    pip install --user ghp-import &&
    /home/travis/.local/bin/ghp-import -n target/doc &&
    git push -fq https://${GH_TOKEN}@github.com/${TRAVIS_REPO_SLUG}.git gh-pages &&
    echo "documented"'