#!/bin/bash ## Build/ Test/ Clippy all supported feature permutations set -eu mode=${1:-help} extended=${2:-false} features_base=( spat,gnss_ubx,screen # "standalone" simple spat,gnss_ubx,screen,ble # "standalone" with BLE spat,gnss_ubx,screen,ble,cam_tx # "standalone" with CAM spat,gnss_ubx,screen,cam_tx,cam,denm uart,cam,denm # "smartphone companion with UART" ble,cam,denm,cam_tx # "smartphone companion with BLE" ) features_more=( uart,ble,cam,denm spat,gnss_ubx,screen,cam_tx spat,gnss_ubx,screen,cam,denm spat,gnss_ubx,screen,cam_tx,cam,denm gnss_ubx,screen,cam_tx,cam,denm ) features_test=( spat,cam,denm,uart ) runBuild () { for feat in "${features[@]}"; do echo "cargo build for $feat ..." cargo build --release --no-default-features -F esp,$feat done } runTest () { for feat in "${features_test[@]}"; do echo "cargo test for $feat ..." cargo test --target host-tuple --bin test --no-default-features -F std,$feat done } runClippy () { for feat in "${features[@]}"; do echo "clippy for $feat ..." cargo clippy --no-default-features -F esp,$feat -- -Wclippy::pedantic done } if [ $extended == "--more" ]; then echo "running with extended feature list" features=( "${features_base[@]}" "${features_more[@]}" ) else echo "running standard feature list" features=( "${features_base[@]}" ) fi case $mode in build) runBuild ;; clippy) runClippy ;; test) runTest ;; all) runBuild runClippy runTest ;; *) echo "Usage: $0 [build | clippy | test | all] [--more]" esac