#!/usr/bin/env bash # Deploy a single contract to Chain 138 (dry-run by default). # Usage: ./scripts/deployment/deploy-one-contract.sh [--broadcast] # Example: ./scripts/deployment/deploy-one-contract.sh script/DeployMulticall.s.sol:DeployMulticall --broadcast # Requires: smom-dbis-138/.env with PRIVATE_KEY, RPC_URL_138 (Chain 138 Core) set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" SMOM="${SMOM_DIR:-${PROJECT_ROOT}/smom-dbis-138}" [[ -f "${PROJECT_ROOT}/scripts/lib/load-project-env.sh" ]] && source "${PROJECT_ROOT}/scripts/lib/load-project-env.sh" 2>/dev/null || true [[ -f "${SMOM}/.env" ]] && source "${SMOM}/.env" 2>/dev/null || true GAS_PRICE="${GAS_PRICE:-1000000000}" RPC_URL="${RPC_URL_138:-http://192.168.11.211:8545}" SCRIPT_SPEC="${1:-}" if [[ -z "$SCRIPT_SPEC" ]]; then echo "Usage: $0 [--broadcast]" echo "Example: $0 script/DeployMulticall.s.sol:DeployMulticall --broadcast" exit 1 fi BROADCAST="" [[ "${2:-}" = "--broadcast" ]] && BROADCAST="--broadcast --private-key ${PRIVATE_KEY:?PRIVATE_KEY required for broadcast}" cd "$SMOM" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "Deploy one contract: $SCRIPT_SPEC" echo "RPC: $RPC_URL | Gas price: $GAS_PRICE" [[ -n "$BROADCAST" ]] && echo "Mode: BROADCAST (on-chain)" || echo "Mode: DRY RUN (no tx)" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" forge script "$SCRIPT_SPEC" \ --rpc-url "$RPC_URL" \ --with-gas-price "$GAS_PRICE" \ $BROADCAST echo "" echo "Done. If you used --broadcast, note the deployed address(es) and run verification next."