#!/usr/bin/env bash # Run all checkable "before deploy" items from RECOMMENDATIONS_AND_FIXES_BEFORE_DEPLOY.md. # Usage: ./scripts/deployment/run-before-deploy-checks.sh [--cost] [--alltra] [--on-chain] [--skip-build] # --cost Run preflight with --cost (gas estimate). # --alltra Include alltra-lifi-settlement in contract tests (slower). # --on-chain Run check-contracts-on-chain-138.sh (requires RPC). # --skip-build Skip forge build; use existing artifacts (step 3 and test script both skip build). # # Requires: run from repo root; forge in PATH. # See: docs/03-deployment/RECOMMENDATIONS_AND_FIXES_BEFORE_DEPLOY.md set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" RUN_COST="" RUN_ALLTRA="" RUN_ONCHAIN="" SKIP_BUILD="" FAILED=0 for a in "$@"; do case "$a" in --cost) RUN_COST=1 ;; --alltra) RUN_ALLTRA=1 ;; --on-chain) RUN_ONCHAIN=1 ;; --skip-build) SKIP_BUILD=1 ;; esac done echo "=== Before-deploy checks (recommendations and fixes) ===" echo "" # 1) Preflight echo "--- 1. Preflight (RPC, dotenv, nonce) ---" if [[ -n "$RUN_COST" ]]; then if "$SCRIPT_DIR/preflight-chain138-deploy.sh" --cost; then echo " PASS"; else echo " FAIL"; FAILED=$((FAILED+1)); fi else if "$SCRIPT_DIR/preflight-chain138-deploy.sh"; then echo " PASS"; else echo " FAIL"; FAILED=$((FAILED+1)); fi fi echo "" # 2) Env check (smom-dbis-138) echo "--- 2. Env check (smom-dbis-138) ---" if (cd "$PROJECT_ROOT/smom-dbis-138" && ./scripts/deployment/check-env-required.sh) >/dev/null 2>&1; then echo " PASS"; else echo " FAIL"; FAILED=$((FAILED+1)); fi echo "" # 3) Forge build (skip if --skip-build) echo "--- 3. Forge build (smom-dbis-138) ---" if [[ -n "$SKIP_BUILD" ]]; then echo " SKIP (--skip-build)" else if (cd "$PROJECT_ROOT/smom-dbis-138" && forge build) >/dev/null 2>&1; then echo " PASS"; else echo " FAIL"; FAILED=$((FAILED+1)); fi fi echo "" # 4) Contract tests (skip build here; use step 3 build or existing artifacts) echo "--- 4. Contract tests (unit; use --alltra for e2e) ---" if [[ -n "$RUN_ALLTRA" ]]; then if "$SCRIPT_DIR/test-all-contracts-before-deploy.sh" --alltra --skip-build 2>/dev/null; then echo " PASS"; else echo " FAIL"; FAILED=$((FAILED+1)); fi else if "$SCRIPT_DIR/test-all-contracts-before-deploy.sh" --no-match "Fork|Mainnet|Integration|e2e" --skip-build 2>/dev/null; then echo " PASS"; else echo " FAIL"; FAILED=$((FAILED+1)); fi fi echo "" # 5) Config validation echo "--- 5. Config validation ---" if (cd "$PROJECT_ROOT" && bash scripts/validation/validate-config-files.sh) >/dev/null 2>&1; then echo " PASS"; else echo " FAIL"; FAILED=$((FAILED+1)); fi echo "" # 6) On-chain verification (optional) if [[ -n "$RUN_ONCHAIN" ]]; then echo "--- 6. On-chain verification (Chain 138) ---" if (cd "$PROJECT_ROOT" && ./scripts/verify/check-contracts-on-chain-138.sh) >/dev/null 2>&1; then echo " PASS"; else echo " FAIL"; FAILED=$((FAILED+1)); fi echo "" fi echo "=== Summary ===" if [[ $FAILED -eq 0 ]]; then echo "All checkable items passed. Complete remaining operator items (gas, POOL_MANAGER_ROLE, RPC writable if needed) per RECOMMENDATIONS_AND_FIXES_BEFORE_DEPLOY.md." exit 0 else echo "$FAILED check(s) failed. Fix and re-run." exit 1 fi