#!/usr/bin/env bash

# Exit immediately if any command returns non-zero exit status.
set -e

# `fmt` doesn't depend on which features are enabled
echo "### fmt --all --check ###"
cargo fmt --all --check

# With no features
echo "### build --no-default-features ###"
RUSTFLAGS="-D warnings" cargo build --no-default-features
echo "### nextest run --no-default-features --workspace ###"
cargo nextest run --no-default-features --workspace
# Nextest doesn't support doc tests, run those separately
echo "### test --doc --no-default-features --workspace ###"
cargo test --doc --no-default-features --workspace
echo "### check --no-default-features --workspace ###"
cargo check --no-default-features --workspace
echo "### clippy --workspace --all-targets --no-default-features -- -D warnings ###"
cargo clippy --workspace --all-targets --no-default-features -- -D warnings

# With default features
echo "### build ###"
cargo build
echo "### nextest run --workspace ###"
cargo nextest run --workspace
# Nextest doesn't support doc tests, run those separately
echo "### test --doc --workspace ###"
cargo test --doc --workspace
echo "### check --workspace ###"
cargo check --workspace
echo "### clippy --workspace --all-targets -- -D warnings ###"
cargo clippy --workspace --all-targets -- -D warnings

# With all features
echo "### build --all-features ###"
cargo build --all-features
echo "### nextest run --all-features --workspace ###"
cargo nextest run --all-features --workspace
# Nextest doesn't support doc tests, run those separately
echo "### test --doc --all-features --workspace ###"
cargo test --doc --all-features --workspace
echo "### check --all-features --workspace ###"
cargo check --all-features --workspace
echo "### clippy --workspace --all-targets --all-features -- -D warnings ###"
cargo clippy --workspace --all-targets --all-features -- -D warnings

echo "### cargo doc --all-features --no-deps ###"
RUSTDOCFLAGS="-D rustdoc::all -A rustdoc::private_intra_doc_links" cargo doc --all-features --no-deps
