Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
Co-authored-by: Cursor <cursoragent@cursor.com>
68 lines
2.5 KiB
Bash
68 lines
2.5 KiB
Bash
#!/usr/bin/env bash
|
|
# Load contract addresses from config/smart-contracts-master.json into the environment.
|
|
# Use after load-project-env.sh so .env overrides; addresses not set in .env are filled from the master JSON.
|
|
#
|
|
# Usage: source "${SCRIPT_DIR}/lib/load-contract-addresses.sh"
|
|
# Requires: jq (optional; if missing, only config/contract-addresses.conf is sourced when present)
|
|
#
|
|
# Exports: For each chain, contract names as CONTRACTS_<chain>_<Name> and env var names from envVarMap
|
|
# (e.g. CCIP_ROUTER, CCIPWETH9_BRIDGE_CHAIN138) when not already set.
|
|
# Version: 2026-02-13
|
|
|
|
if [[ -z "${PROJECT_ROOT:-}" ]]; then
|
|
PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
export PROJECT_ROOT
|
|
fi
|
|
CONTRACTS_JSON="${PROJECT_ROOT}/config/smart-contracts-master.json"
|
|
|
|
# Source legacy contract-addresses.conf if present (e.g. ADDR_CCIP_SENDER for verify scripts)
|
|
[[ -f "${PROJECT_ROOT}/config/contract-addresses.conf" ]] && source "${PROJECT_ROOT}/config/contract-addresses.conf" 2>/dev/null || true
|
|
|
|
if [[ ! -f "$CONTRACTS_JSON" ]]; then
|
|
return 0 2>/dev/null || true
|
|
fi
|
|
|
|
if ! command -v jq &>/dev/null; then
|
|
return 0 2>/dev/null || true
|
|
fi
|
|
|
|
# Export a var only if not already set (so .env overrides)
|
|
_set_if_unset() {
|
|
local key="$1"
|
|
local val="$2"
|
|
if [[ -z "${!key:-}" ]]; then
|
|
export "${key}=${val}"
|
|
fi
|
|
}
|
|
|
|
# For chain $1, export contracts as CONTRACTS_<chain>_<contract_key> and envVarMap names
|
|
_export_chain() {
|
|
local chain="$1"
|
|
local chain_key="$chain"
|
|
local contracts
|
|
local env_map
|
|
contracts=$(jq -r --arg c "$chain_key" '.chains[$c].contracts // {} | to_entries[] | "\(.key)\t\(.value)"' "$CONTRACTS_JSON" 2>/dev/null)
|
|
env_map=$(jq -r --arg c "$chain_key" '.chains[$c].envVarMap // {} | to_entries[] | "\(.key)\t\(.value)"' "$CONTRACTS_JSON" 2>/dev/null)
|
|
|
|
while IFS=$'\t' read -r name addr; do
|
|
[[ -z "$name" || -z "$addr" ]] && continue
|
|
local safe_name="${name//[^a-zA-Z0-9_]/_}"
|
|
_set_if_unset "CONTRACTS_${chain}_${safe_name}" "$addr"
|
|
done <<< "$contracts"
|
|
|
|
while IFS=$'\t' read -r env_var contract_key; do
|
|
[[ -z "$env_var" || -z "$contract_key" ]] && continue
|
|
local addr
|
|
addr=$(jq -r --arg c "$chain_key" --arg k "$contract_key" '.chains[$c].contracts[$k] // empty' "$CONTRACTS_JSON" 2>/dev/null)
|
|
[[ -n "$addr" ]] && _set_if_unset "$env_var" "$addr"
|
|
done <<< "$env_map"
|
|
}
|
|
|
|
for chain in 138 1; do
|
|
if jq -e --arg c "$chain" '.chains[$c]' "$CONTRACTS_JSON" &>/dev/null; then
|
|
_export_chain "$chain"
|
|
fi
|
|
done
|
|
|
|
export CONTRACTS_MASTER_JSON="$CONTRACTS_JSON"
|