#!/usr/bin/env bash set -euo pipefail ROOT=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd -P) # shellcheck source=process-lib.sh source "$ROOT/tools/process-lib.sh" remove_exact() { local path=$1 if [[ -e "$path" ]]; then rm -f -- "$path" printf 'Removed %s\n' "${path#"$ROOT/"}" fi } remove_local_manifest() { local path=$1 [[ -e "$path" ]] || return 0 if node -e 'const fs=require("fs"); const value=JSON.parse(fs.readFileSync(process.argv[1],"utf8")); process.exit(value && value.network === "anvil" && value.chainId === 31337 ? 0 : 1)' "$path" 2>/dev/null; then remove_exact "$path" else printf 'Preserved non-local or invalid manifest %s\n' "${path#"$ROOT/"}" fi } demo_stop_recorded "$ROOT" vite demo_stop_recorded "$ROOT" anvil remove_exact "$ROOT/.demo/anvil.pid" remove_exact "$ROOT/.demo/anvil.start" remove_exact "$ROOT/.demo/anvil.pgid" remove_exact "$ROOT/.demo/anvil.log" remove_exact "$ROOT/.demo/vite.pid" remove_exact "$ROOT/.demo/vite.start" remove_exact "$ROOT/.demo/vite.pgid" remove_exact "$ROOT/.demo/vite.log" remove_local_manifest "$ROOT/deployments/pending.json" remove_local_manifest "$ROOT/deployments/anvil.json" remove_local_manifest "$ROOT/deployments/active.json" remove_local_manifest "$ROOT/web/public/deployment.json" remove_exact "$ROOT/web/src/generated/contracts.ts" rmdir -- "$ROOT/.demo" 2>/dev/null || true printf '%s\n' 'Local generated state is reproducible with make demo-local.'