safe-migrate 0.4.3

Analyze PostgreSQL migrations for schema and locking risks
Documentation
#!/bin/sh
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