Files
ThothII/scripts/verify-schema-v3-only-release.sh

35 lines
1.5 KiB
Bash
Executable File

#!/usr/bin/env bash
# Reproducible schema-v4-only release gate. The Git checkout is the trust root;
# dependencies come from backend/package-lock.json and dist comes from a clean build.
set -euo pipefail
export PYTHONDONTWRITEBYTECODE=1
root="$(cd "$(dirname "$0")/.." && pwd -P)"
if [[ ${1:-} == --dry-run ]]; then
cat <<'EOF'
export PYTHONDONTWRITEBYTECODE=1
export NPM_CONFIG_USERCONFIG=<private-empty-user-config>
export NPM_CONFIG_GLOBALCONFIG=<private-empty-global-config>
/bin/bash scripts/verify-schema-v3-only.sh --bootstrap-trust-only
(cd backend && npm ci --ignore-scripts)
(cd backend && npm run build)
(cd backend && npm run test:schema-v4-verifier)
/bin/bash scripts/test-verify-schema-v3-only.sh
/bin/bash scripts/verify-schema-v3-only.sh
EOF
exit 0
fi
[[ $# -eq 0 ]] || { echo "usage: $0 [--dry-run]" >&2; exit 2; }
release_tmp="$(mktemp -d "${TMPDIR:-/tmp}/thoth-v3-release.XXXXXX")"
trap 'rm -rf "$release_tmp"' EXIT HUP INT TERM
: >"$release_tmp/npm-userconfig"
: >"$release_tmp/npm-globalconfig"
chmod 0600 "$release_tmp/npm-userconfig" "$release_tmp/npm-globalconfig"
export NPM_CONFIG_USERCONFIG="$release_tmp/npm-userconfig"
export NPM_CONFIG_GLOBALCONFIG="$release_tmp/npm-globalconfig"
/bin/bash "$root/scripts/verify-schema-v3-only.sh" --bootstrap-trust-only
(cd "$root/backend" && npm ci --ignore-scripts)
(cd "$root/backend" && npm run build)
(cd "$root/backend" && npm run test:schema-v4-verifier)
/bin/bash "$root/scripts/test-verify-schema-v3-only.sh"
/bin/bash "$root/scripts/verify-schema-v3-only.sh"