trigger:
  - master

strategy:
  matrix:
    linux-stable:
      image: ubuntu-18.04
      style: 'unflagged'
    macos-stable:
      image: macos-10.14
      style: 'unflagged'
    windows-stable:
      image: windows-2019
      style: 'unflagged'
    linux-nightly-canary:
      image: ubuntu-18.04
      style: 'canary'
    macos-nightly-canary:
      image: macos-10.14
      style: 'canary'
    windows-nightly-canary:
      image: windows-2019
      style: 'canary'
    fmt:
      image: ubuntu-18.04
      style: 'fmt'

pool:
  vmImage: $(image)

steps:
  - bash: |
      set -e
      if [ -e /etc/debian_version ]
      then
        sudo apt-get -y install libxcb-composite0-dev libx11-dev
      fi
      if [ "$(uname)" == "Darwin" ]; then
        curl https://sh.rustup.rs -sSf | sh -s -- -y --no-modify-path --default-toolchain "stable"
        export PATH=$HOME/.cargo/bin:$PATH
      fi
      rustup update
      rustc -Vv
      echo "##vso[task.prependpath]$HOME/.cargo/bin"
      rustup component add rustfmt
    displayName: Install Rust
  - bash: RUSTFLAGS="-D warnings" cargo test --all --features stable,test-bins
    condition: eq(variables['style'], 'unflagged')
    displayName: Run tests
  - bash: RUSTFLAGS="-D warnings" cargo clippy --all --features=stable -- -D clippy::result_unwrap_used -D clippy::option_unwrap_used
    condition: eq(variables['style'], 'unflagged')
    displayName: Check clippy lints
  - bash: NUSHELL_ENABLE_ALL_FLAGS=1 RUSTFLAGS="-D warnings" cargo test --all --features stable,test-bins
    condition: eq(variables['style'], 'canary')
    displayName: Run tests
  - bash: NUSHELL_ENABLE_ALL_FLAGS=1 RUSTFLAGS="-D warnings" cargo clippy --all --features=stable -- -D clippy::result_unwrap_used -D clippy::option_unwrap_used
    condition: eq(variables['style'], 'canary')
    displayName: Check clippy lints
  - bash: cargo fmt --all -- --check
    condition: eq(variables['style'], 'fmt')
    displayName: Lint
