All checks were successful
CI / lint-and-test (push) Successful in 9m52s
Co-authored-by: Cursor <cursoragent@cursor.com>
143 lines
3.8 KiB
Bash
Executable File
143 lines
3.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Audit required and optional credentials across workspace dotenv files.
|
|
set -euo pipefail
|
|
|
|
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
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"; }
|
|
|
|
is_placeholder() {
|
|
local v="$1"
|
|
[[ -z "$v" ]] && return 0
|
|
[[ "$v" == *replace_me* ]] && return 0
|
|
[[ "$v" == *your_* ]] && return 0
|
|
[[ "$v" == *temp_* ]] && return 0
|
|
return 1
|
|
}
|
|
|
|
read_env() {
|
|
local file="$1"
|
|
local key="$2"
|
|
[[ -f "$file" ]] || { echo ""; return; }
|
|
grep -E "^${key}=" "$file" 2>/dev/null | head -1 | cut -d= -f2- | sed 's/^"//;s/"$//' || true
|
|
}
|
|
|
|
echo "=== Solace Treasury — Environment Audit ==="
|
|
echo ""
|
|
|
|
# Frontend
|
|
FE="$ROOT/frontend/.env.local"
|
|
echo "## Frontend ($FE)"
|
|
for key in NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID NEXT_PUBLIC_CHAIN138_RPC_URL NEXT_PUBLIC_TREASURY_WALLET_ADDRESS NEXT_PUBLIC_SUB_ACCOUNT_FACTORY_ADDRESS NEXT_PUBLIC_API_URL; do
|
|
val=$(read_env "$FE" "$key")
|
|
if is_placeholder "$val"; then
|
|
if [[ "$key" == "NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID" ]]; then
|
|
warn "$key optional (Injected/MetaMask work without it)"
|
|
else
|
|
fail "$key missing or placeholder"
|
|
fi
|
|
else
|
|
ok "$key set"
|
|
fi
|
|
done
|
|
|
|
# Backend
|
|
BE="$ROOT/backend/.env"
|
|
echo ""
|
|
echo "## Backend ($BE)"
|
|
for key in DATABASE_URL RPC_URL CHAIN_ID CONTRACT_ADDRESS FACTORY_ADDRESS; do
|
|
val=$(read_env "$BE" "$key")
|
|
if is_placeholder "$val"; then
|
|
fail "$key missing or placeholder"
|
|
else
|
|
ok "$key set"
|
|
fi
|
|
done
|
|
|
|
IDX="$ROOT/backend/.env.indexer"
|
|
echo ""
|
|
echo "## Indexer ($IDX)"
|
|
if [[ -f "$IDX" ]]; then
|
|
for key in CONTRACT_ADDRESS START_BLOCK RPC_URL; do
|
|
val=$(read_env "$IDX" "$key")
|
|
if is_placeholder "$val"; then
|
|
warn "$key missing in .env.indexer (falls back to backend/.env)"
|
|
else
|
|
ok "$key set"
|
|
fi
|
|
done
|
|
else
|
|
warn ".env.indexer not found"
|
|
fi
|
|
|
|
# Contracts
|
|
CE="$ROOT/contracts/.env"
|
|
echo ""
|
|
echo "## Contracts ($CE)"
|
|
for key in CHAIN138_RPC_URL PRIVATE_KEY; do
|
|
val=$(read_env "$CE" "$key")
|
|
if is_placeholder "$val"; then
|
|
fail "$key missing or placeholder"
|
|
else
|
|
ok "$key set"
|
|
fi
|
|
done
|
|
|
|
# Address alignment
|
|
DEPLOY="$ROOT/contracts/deployments/chain138.json"
|
|
if [[ -f "$DEPLOY" && -f "$BE" ]]; then
|
|
echo ""
|
|
echo "## Deployment alignment"
|
|
DEPLOY_TREASURY=$(jq -r '.contracts.TreasuryWallet' "$DEPLOY" | tr '[:upper:]' '[:lower:]')
|
|
ENV_TREASURY=$(read_env "$BE" CONTRACT_ADDRESS | tr '[:upper:]' '[:lower:]')
|
|
if [[ -n "$DEPLOY_TREASURY" && "$DEPLOY_TREASURY" == "$ENV_TREASURY" ]]; then
|
|
ok "CONTRACT_ADDRESS matches chain138.json"
|
|
else
|
|
warn "CONTRACT_ADDRESS drift — run ./scripts/sync-env-from-deployment.sh"
|
|
fi
|
|
fi
|
|
|
|
# Connectivity
|
|
echo ""
|
|
echo "## Connectivity"
|
|
RPC=$(read_env "$BE" RPC_URL)
|
|
RPC="${RPC:-http://192.168.11.211:8545}"
|
|
if curl -sf -m 3 -X POST "$RPC" -H 'Content-Type: application/json' \
|
|
-d '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}' | grep -q '"0x8a"'; then
|
|
ok "Chain 138 RPC reachable ($RPC)"
|
|
else
|
|
fail "Chain 138 RPC unreachable ($RPC)"
|
|
fi
|
|
|
|
DB=$(read_env "$BE" DATABASE_URL)
|
|
if [[ -n "$DB" ]]; then
|
|
if command -v psql >/dev/null && psql "$DB" -c "SELECT 1;" >/dev/null 2>&1; then
|
|
ok "PostgreSQL reachable"
|
|
else
|
|
warn "PostgreSQL not reachable (use local Docker or Proxmox CT 3002)"
|
|
fi
|
|
fi
|
|
|
|
API=$(read_env "$FE" NEXT_PUBLIC_API_URL)
|
|
API="${API:-http://localhost:3001}"
|
|
if curl -sf -m 3 "$API/health" | grep -q '"status"'; then
|
|
ok "Backend API reachable ($API)"
|
|
else
|
|
warn "Backend API not reachable ($API) — run pnpm run dev"
|
|
fi
|
|
|
|
if [[ -f "$DEPLOY" ]]; then
|
|
ok "Chain138 deployment record present"
|
|
else
|
|
warn "No contracts/deployments/chain138.json — run deploy:chain138"
|
|
fi
|
|
|
|
echo ""
|
|
echo "Run ./scripts/sync-env-from-deployment.sh after deploy to propagate addresses."
|