set -eu
verbosity=0
rule_filter=""
fixture_filter=""
usage() {
printf '%s\n' "Usage: scripts/live-differential [-v|-vv|-vvv] [--rule RULE_DIRECTORY] [--fixture RULE_DIRECTORY/FILE.sql[,RULE_DIRECTORY/FILE.sql...]]"
printf '%s\n' "Requires DATABASE_URL for a disposable PostgreSQL database."
}
while [ "$#" -gt 0 ]; do
case "$1" in
-v)
verbosity=$((verbosity + 1))
;;
-vv)
verbosity=$((verbosity + 2))
;;
-vvv)
verbosity=$((verbosity + 3))
;;
--rule)
shift
if [ "$#" -eq 0 ]; then
usage >&2
exit 2
fi
rule_filter=$1
;;
--fixture)
shift
if [ "$#" -eq 0 ]; then
usage >&2
exit 2
fi
fixture_filter=$1
;;
-h|--help)
usage
exit 0
;;
*)
usage >&2
exit 2
;;
esac
shift
done
if [ -z "${DATABASE_URL:-}" ]; then
printf '%s\n' "DATABASE_URL is required for the live differential harness." >&2
exit 2
fi
export SAFE_MIGRATE_DIFF_VERBOSITY=$verbosity
export SAFE_MIGRATE_REQUIRE_LIVE=1
if [ -n "$rule_filter" ]; then
export SAFE_MIGRATE_DIFF_RULE=$rule_filter
fi
if [ -n "$fixture_filter" ]; then
export SAFE_MIGRATE_DIFF_FIXTURE=$fixture_filter
fi
cargo test --locked --test live_differential_harness \
live_postgres_differential_harness -- --ignored --nocapture