#!/bin/sh set -ex FEATURES="std alloc" cargo --version rustc --version # Work out if we are using a nightly toolchain. NIGHTLY=false if cargo --version | grep nightly >/dev/null; then NIGHTLY=true fi # Make all cargo invocations verbose export CARGO_TERM_VERBOSE=true # Defaults / sanity checks cargo build cargo test if [ "$DO_LINT" = true ] then cargo clippy --all-features --all-targets -- -D warnings fi if [ "$DO_FEATURE_MATRIX" = true ]; then # No features cargo build --no-default-features cargo test --no-default-features # All features cargo build --no-default-features --features="$FEATURES" cargo test --no-default-features --features="$FEATURES" # Single features for feature in ${FEATURES} do cargo build --no-default-features --features="$feature" cargo test --no-default-features --features="$feature" done fi # Build the docs if told to (this only works with the nightly toolchain) if [ "$DO_DOCSRS" = true ]; then RUSTDOCFLAGS="--cfg docsrs -D warnings -D rustdoc::broken-intra-doc-links" cargo +nightly doc --all-features fi # Build the docs with a stable toolchain, in unison with the DO_DOCSRS command # above this checks that we feature guarded docs imports correctly. if [ "$DO_DOCS" = true ]; then RUSTDOCFLAGS="-D warnings" cargo +stable doc --all-features fi