scripts/checks.sh
#!/bin/bash
set -e

# This script is used for running all the checks
# needed to make sure CI passes.

# See below for the reasoning behind testing
# clippy for all feature combinations.
# (Note: clippy reports compile errors too)

# You can pass extra args to cargo commands
#   ./scripts/check.sh --release
# will run in release mode. You can use that
# if you already have release mode compiled, as
# it will be faster to use the version you already compiled

TESTNAME=""
cleanup() {
    exit_code=$?
    if [[ ${exit_code} -ne 0 ]]; then
        echo -e "\n\n##### Failed on \"$TESTNAME\"" 1>&2
    fi
    exit $exit_code
}
trap cleanup EXIT

TESTNAME="Running cargo check"
echo "$TESTNAME"
cargo check $@ -q --all-features

TESTNAME="Running cargo fmt check"
echo "$TESTNAME"
cargo fmt $@ -q --all -- --check

# Testing all the combinations of clippy.
# There were many instances where a certain struct
# differed based on liquid or not(liquid) etc.
# and the clippy fixes would break the other
# feature combination.
#
# Be prepared to use #[allow(clippy::___)] attributes
# to "fix" contradictions between feature sets.

TESTNAME="Running cargo clippy check no features"
echo "$TESTNAME"
cargo clippy $@ -q

TESTNAME="Running cargo clippy check electrum-discovery"
echo "$TESTNAME"
cargo clippy $@ -q -F electrum-discovery

TESTNAME="Running cargo clippy check liquid"
echo "$TESTNAME"
cargo clippy $@ -q -F liquid

TESTNAME="Running cargo clippy check electrum-discovery + liquid"
echo "$TESTNAME"
cargo clippy $@ -q -F electrum-discovery,liquid

TESTNAME="Running cargo test with all features"
echo "$TESTNAME"
cargo test $@ -q --lib --all-features
