Files
proxmox/scripts/deployment/run-gru-v2-wave1-chain138.sh
defiQUG dbd517b279 Sync workspace: config, docs, scripts, CI, operator rules, and submodule pointers.
- Update dbis_core, cross-chain-pmm-lps, explorer-monorepo, metamask-integration, pr-workspace/chains
- Omit embedded publish git dirs and empty placeholders from index

Made-with: Cursor
2026-04-12 06:12:20 -07:00

123 lines
3.7 KiB
Bash

#!/usr/bin/env bash
# Execute or dry-run the GRU V2 Wave 1 Chain 138 deployment plan.
#
# Usage:
# bash scripts/deployment/run-gru-v2-wave1-chain138.sh
# bash scripts/deployment/run-gru-v2-wave1-chain138.sh --code=EUR
# bash scripts/deployment/run-gru-v2-wave1-chain138.sh --apply
#
# Default mode is dry-run. Use --apply to broadcast.
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
PLAN_JSON="${PROJECT_ROOT}/config/gru-v2-chain138-wave1-v2-plan.json"
DEPLOY_SCRIPT="${PROJECT_ROOT}/scripts/deployment/deploy-gru-v2-generic-chain138.sh"
METADATA_MANIFEST="${PROJECT_ROOT}/config/gru-v2-metadata/chain138/ipfs-manifest.latest.json"
FILTER_CODE=""
APPLY=0
for arg in "$@"; do
case "$arg" in
--code=*) FILTER_CODE="${arg#--code=}" ;;
--apply) APPLY=1 ;;
*)
echo "Unknown argument: $arg" >&2
exit 2
;;
esac
done
if ! command -v jq >/dev/null 2>&1; then
echo "jq is required" >&2
exit 1
fi
if [[ ! -f "$PLAN_JSON" ]]; then
echo "Missing plan JSON: $PLAN_JSON" >&2
exit 1
fi
RUN_TS="$(date -u +%Y%m%dT%H%M%SZ)"
LOG_DIR="${PROJECT_ROOT}/.codex-artifacts/gru-v2-wave1"
mkdir -p "$LOG_DIR"
echo "=== GRU V2 Wave 1 Chain 138 runner ==="
echo "Plan: $PLAN_JSON"
if [[ -n "$FILTER_CODE" ]]; then
echo "Filter: $FILTER_CODE"
fi
if [[ "$APPLY" == "1" ]]; then
echo "Mode: APPLY"
: "${PRIVATE_KEY:?PRIVATE_KEY is required for --apply}"
echo "Logs: $LOG_DIR/$RUN_TS-*.log"
else
echo "Mode: DRY_RUN"
fi
echo ""
jq -c --arg filter "$FILTER_CODE" '
.assets[]
| select(($filter == "") or (.code == $filter))
| . as $asset
| .deployments[]
| {
code: $asset.code,
tokenName,
tokenSymbol,
currencyCode,
metadataKey,
registryName,
registrySymbol
}
' "$PLAN_JSON" | while IFS= read -r row; do
code="$(jq -r '.code' <<<"$row")"
token_name="$(jq -r '.tokenName' <<<"$row")"
token_symbol="$(jq -r '.tokenSymbol' <<<"$row")"
currency_code="$(jq -r '.currencyCode' <<<"$row")"
metadata_key="$(jq -r '.metadataKey' <<<"$row")"
registry_name="$(jq -r '.registryName' <<<"$row")"
registry_symbol="$(jq -r '.registrySymbol' <<<"$row")"
token_uri=""
disclosure_uri=""
reporting_uri=""
if [[ -f "$METADATA_MANIFEST" ]]; then
token_uri="$(jq -r --arg symbol "$token_symbol" '.assets[$symbol].tokenURI // empty' "$METADATA_MANIFEST")"
disclosure_uri="$(jq -r --arg symbol "$token_symbol" '.assets[$symbol].regulatoryDisclosureURI // empty' "$METADATA_MANIFEST")"
reporting_uri="$(jq -r --arg symbol "$token_symbol" '.assets[$symbol].reportingURI // empty' "$METADATA_MANIFEST")"
fi
echo "--- ${code} :: ${token_symbol} ---"
if [[ -n "$token_uri" ]]; then
echo "metadata: ${metadata_key} -> ${token_uri}"
else
echo "metadata: ${metadata_key} -> no IPFS manifest entry found; deploying without token/disclosure/reporting URIs"
fi
if [[ "$APPLY" == "1" ]]; then
TOKEN_NAME="$token_name" \
TOKEN_SYMBOL="$token_symbol" \
CURRENCY_CODE="$currency_code" \
REGISTRY_NAME="$registry_name" \
REGISTRY_SYMBOL="$registry_symbol" \
TOKEN_URI="$token_uri" \
REGULATORY_DISCLOSURE_URI="$disclosure_uri" \
REPORTING_URI="$reporting_uri" \
bash "$DEPLOY_SCRIPT" | tee "$LOG_DIR/${RUN_TS}-${token_symbol}.log"
else
TOKEN_NAME="$token_name" \
TOKEN_SYMBOL="$token_symbol" \
CURRENCY_CODE="$currency_code" \
REGISTRY_NAME="$registry_name" \
REGISTRY_SYMBOL="$registry_symbol" \
TOKEN_URI="$token_uri" \
REGULATORY_DISCLOSURE_URI="$disclosure_uri" \
REPORTING_URI="$reporting_uri" \
PRIVATE_KEY="${PRIVATE_KEY:-0x1111111111111111111111111111111111111111111111111111111111111111}" \
bash "$DEPLOY_SCRIPT" --dry-run
fi
echo ""
done