feat(scripts): resolve CCIP/LINK addresses via config inventory
- Add scripts/lib/address-inventory.sh (jq + JSON inventory fallback) - Wire deployment helper scripts to load_explorer_runtime_env + resolve_address_value - Persist new LINK to address-inventory.json via persist_inventory_value - Document config/*.json in config/README.md Made-with: Cursor
This commit is contained in:
67
scripts/lib/address-inventory.sh
Normal file
67
scripts/lib/address-inventory.sh
Normal file
@@ -0,0 +1,67 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Shared helpers for explorer-monorepo address inventory access.
|
||||
|
||||
_inventory_helper_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
EXPLORER_PROJECT_ROOT="${EXPLORER_PROJECT_ROOT:-$(cd "$_inventory_helper_dir/../.." && pwd)}"
|
||||
EXPLORER_RUNTIME_ENV_FILE="${EXPLORER_RUNTIME_ENV_FILE:-$EXPLORER_PROJECT_ROOT/.env}"
|
||||
EXPLORER_PARENT_ENV_FILE="${EXPLORER_PARENT_ENV_FILE:-$EXPLORER_PROJECT_ROOT/../.env}"
|
||||
EXPLORER_ADDRESS_INVENTORY_FILE="${EXPLORER_ADDRESS_INVENTORY_FILE:-$EXPLORER_PROJECT_ROOT/config/address-inventory.json}"
|
||||
|
||||
load_explorer_runtime_env() {
|
||||
source "$EXPLORER_RUNTIME_ENV_FILE" 2>/dev/null || true
|
||||
source "$EXPLORER_PARENT_ENV_FILE" 2>/dev/null || true
|
||||
}
|
||||
|
||||
inventory_get() {
|
||||
local key="${1:-}"
|
||||
if [ -z "$key" ] || [ ! -f "$EXPLORER_ADDRESS_INVENTORY_FILE" ] || ! command -v jq >/dev/null 2>&1; then
|
||||
return 1
|
||||
fi
|
||||
jq -r --arg key "$key" '.inventory[$key] // empty' "$EXPLORER_ADDRESS_INVENTORY_FILE"
|
||||
}
|
||||
|
||||
resolve_address_value() {
|
||||
local env_name="${1:-}"
|
||||
local inventory_key="${2:-$env_name}"
|
||||
local fallback="${3:-}"
|
||||
local current="${!env_name:-}"
|
||||
|
||||
if [ -n "$current" ]; then
|
||||
printf '%s\n' "$current"
|
||||
return 0
|
||||
fi
|
||||
|
||||
current="$(inventory_get "$inventory_key" 2>/dev/null || true)"
|
||||
if [ -n "$current" ]; then
|
||||
printf '%s\n' "$current"
|
||||
return 0
|
||||
fi
|
||||
|
||||
if [ -n "$fallback" ]; then
|
||||
printf '%s\n' "$fallback"
|
||||
return 0
|
||||
fi
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
persist_inventory_value() {
|
||||
local key="${1:-}"
|
||||
local value="${2:-}"
|
||||
local tmp_file
|
||||
|
||||
if [ -z "$key" ] || [ -z "$value" ] || [ ! -f "$EXPLORER_ADDRESS_INVENTORY_FILE" ]; then
|
||||
return 1
|
||||
fi
|
||||
if ! command -v jq >/dev/null 2>&1; then
|
||||
echo "jq is required to update $EXPLORER_ADDRESS_INVENTORY_FILE" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
tmp_file="$(mktemp)"
|
||||
jq --arg key "$key" --arg value "$value" --arg updated "$(date -I)" \
|
||||
'.updated = $updated | .inventory[$key] = $value' \
|
||||
"$EXPLORER_ADDRESS_INVENTORY_FILE" > "$tmp_file"
|
||||
mv "$tmp_file" "$EXPLORER_ADDRESS_INVENTORY_FILE"
|
||||
}
|
||||
Reference in New Issue
Block a user