Files
smom-dbis-138/scripts/deployment/ensure-prerequisites.sh

84 lines
3.4 KiB
Bash
Raw Permalink Normal View History

#!/usr/bin/env bash
# Ensure prerequisites for: LINK funding, PMM (Chain 138), CCIPLogger deploy.
# Run from repo root (proxmox) or smom-dbis-138. Fixes what can be automated and reports the rest.
# Usage: ./scripts/deployment/ensure-prerequisites.sh
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# PROJECT_ROOT = smom-dbis-138
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
cd "$PROJECT_ROOT"
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
ok() { echo -e "${GREEN}${NC} $1"; }
warn() { echo -e "${YELLOW}${NC} $1"; }
fail() { echo -e "${RED}${NC} $1"; }
echo "=== Prerequisites (LINK funding, PMM, CCIPLogger) ==="
echo ""
# 1) .env
if [[ ! -f "$PROJECT_ROOT/.env" ]]; then
fail ".env not found in $PROJECT_ROOT"
exit 1
fi
ok ".env exists"
set -a
source "$PROJECT_ROOT/.env" 2>/dev/null || true
set +a
[[ -z "${PRIVATE_KEY:-}" ]] && fail "PRIVATE_KEY not set in .env" || ok "PRIVATE_KEY set"
[[ -z "${RPC_URL_138:-}" ]] && warn "RPC_URL_138 not set" || ok "RPC_URL_138 set"
# 2) npm install in smom-dbis-138 (for Hardhat / CCIPLogger)
echo ""
echo "--- Dependencies (CCIPLogger / Hardhat) ---"
if [[ -f "$PROJECT_ROOT/package.json" ]]; then
if [[ ! -d "$PROJECT_ROOT/node_modules/hardhat" ]]; then
warn "Hardhat not found in node_modules. Running: npm install --legacy-peer-deps"
npm install --legacy-peer-deps 2>/dev/null || true
fi
if [[ -d "$PROJECT_ROOT/node_modules/hardhat" ]]; then
ok "Hardhat available (node_modules)"
else
warn "Hardhat still missing; run from $PROJECT_ROOT: npm install --legacy-peer-deps"
fi
else
warn "No package.json in $PROJECT_ROOT"
fi
# 3) LINK funding prereqs
echo ""
echo "--- LINK funding ---"
[[ -z "${LINK_TOKEN_CHAIN138:-${LINK_TOKEN:-}}" ]] && warn "LINK_TOKEN_CHAIN138/LINK_TOKEN not set" || ok "Chain 138 LINK token set"
[[ -z "${CCIPWETH9_BRIDGE_CHAIN138:-}" ]] && warn "CCIPWETH9_BRIDGE_CHAIN138 not set" || ok "CCIPWETH9_BRIDGE_CHAIN138 set"
[[ -z "${MAINNET_CCIP_WETH9_BRIDGE:-}" ]] && warn "MAINNET_CCIP_WETH9_BRIDGE not set" || ok "Mainnet bridge vars set"
echo " Deployer must have LINK on each chain. Run: scripts/deployment/fund-ccip-bridges-with-link.sh (use DRY_RUN=1 first)."
# 4) PMM prereqs
echo ""
echo "--- PMM (Chain 138) ---"
if [[ -z "${DODO_VENDING_MACHINE_ADDRESS:-}" || "${DODO_VENDING_MACHINE_ADDRESS}" =~ ^0x?0*$ ]]; then
warn "DODO_VENDING_MACHINE_ADDRESS not set. Set to DODO DVM factory on Chain 138 to run PMM (see docs/deployment/ALL_MAINNETS_DEPLOYMENT_RUNBOOK.md)."
else
ok "DODO_VENDING_MACHINE_ADDRESS set"
fi
[[ -z "${COMPLIANT_USDT_ADDRESS:-}" ]] && warn "COMPLIANT_USDT_ADDRESS not set" || ok "COMPLIANT_USDT_ADDRESS set"
[[ -z "${COMPLIANT_USDC_ADDRESS:-}" ]] && warn "COMPLIANT_USDC_ADDRESS not set" || ok "COMPLIANT_USDC_ADDRESS set"
[[ -z "${OFFICIAL_USDT_ADDRESS:-}" ]] && warn "OFFICIAL_USDT_ADDRESS not set" || ok "OFFICIAL_USDT_ADDRESS set"
[[ -z "${OFFICIAL_USDC_ADDRESS:-}" ]] && warn "OFFICIAL_USDC_ADDRESS not set" || ok "OFFICIAL_USDC_ADDRESS set"
echo " Then run: scripts/deployment/run-pmm-and-pools.sh"
# 5) CCIPLogger
echo ""
echo "--- CCIPLogger ---"
echo " Optional. From $PROJECT_ROOT run: scripts/deployment/deploy-ccip-logger-all-chains.sh"
echo " If Hardhat compile fails (e.g. missing @emoney/interfaces), fix deps or skip CCIPLogger."
echo ""
echo "=== Done. Address any ⚠ items above, then run the task scripts. ==="