cargo 0.32.0

Cargo, a package manager for Rust.
Documentation
language: rust
rust: stable
sudo: required
dist: trusty

git:
  depth: 1

# Using 'cache: cargo' to cache target/ and all of $HOME/.cargo/
# doesn't work well: the cache is large and it takes several minutes
# to move it to and from S3. So instead we only cache the mdbook
# binary.
cache:
  directories:
    - $HOME/.cargo/bin/

matrix:
  include:
    - env: TARGET=x86_64-unknown-linux-gnu
           ALT=i686-unknown-linux-gnu
      if: branch != master OR type = pull_request
    - env: TARGET=x86_64-apple-darwin
           ALT=i686-apple-darwin
      os: osx
      if: branch != master OR type = pull_request

    - env: TARGET=x86_64-unknown-linux-gnu
           ALT=i686-unknown-linux-gnu
      rust: beta
      if: branch != master OR type = pull_request

    # Minimum Rust supported channel. We enable these to make sure we
    # continue to work on the advertised minimum Rust version.
    # However cargo only supports the latest stable so this will get
    # increased every 6 weeks or so when the first PR to use a new feature.
    - env: TARGET=x86_64-unknown-linux-gnu
           ALT=i686-unknown-linux-gnu
      rust: 1.28.0
      script:
        - rustup toolchain install nightly
        - cargo +nightly generate-lockfile -Z minimal-versions
        - cargo -V
        - cargo test
      if: branch != master OR type = pull_request

    - env: TARGET=x86_64-unknown-linux-gnu
           ALT=i686-unknown-linux-gnu
      rust: nightly
      install:
        - mdbook --help || cargo install mdbook --force
      script:
        - cargo test
        - cargo doc --no-deps
        - (cd src/doc && mdbook build --dest-dir ../../target/doc)
      if: branch != master OR type = pull_request

  exclude:
    - rust: stable

before_script:
  - rustup target add $ALT
script:
  - cargo test

notifications:
  email:
    on_success: never

addons:
  apt:
    packages:
      - gcc-multilib