84 lines
3.4 KiB
Bash
Executable File
84 lines
3.4 KiB
Bash
Executable File
#!/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. ==="
|