#!/usr/bin/env bash # Load deployment .env and require common vars. # Usage: source "$SCRIPT_DIR/lib/deployment/dotenv.sh" # Optional: load_deployment_env [--repo-root ] # # Correct dotenv file (in order): # 1. ENV_FILE if set and the file exists (e.g. export ENV_FILE=/path/to/.env) # 2. PROJECT_ROOT/.env (repo root; PROJECT_ROOT = scripts/lib/deployment/../.. when unset) # So: use repo-root .env by default; set ENV_FILE to use a different file. _LIB_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" [[ -z "${PROJECT_ROOT:-}" ]] && PROJECT_ROOT="$(cd "$_LIB_DIR/../.." && pwd)" # Preferred .env: ENV_FILE if set and readable; else PROJECT_ROOT/.env (repo root). load_deployment_env() { local root="${PROJECT_ROOT}" while [[ $# -gt 0 ]]; do case "$1" in --repo-root) root="$2"; shift 2 ;; *) shift ;; esac done export PROJECT_ROOT="$root" local dotenv="${root}/.env" [[ -n "${ENV_FILE:-}" && -f "${ENV_FILE}" ]] && dotenv="${ENV_FILE}" if [[ -f "$dotenv" ]]; then set -a # shellcheck disable=SC1090 source "$dotenv" set +a fi } # Require vars for mainnet LP funding (G4). Fails with message if missing. require_fund_lp_env() { load_deployment_env : "${LIQUIDITY_POOL_ETH_MAINNET:=${LIQUIDITY_POOL:-}}" if [[ -z "${LIQUIDITY_POOL_ETH_MAINNET:-}" ]]; then echo "Set LIQUIDITY_POOL_ETH_MAINNET (or LIQUIDITY_POOL) in .env" >&2 return 1 fi if [[ -z "${ETHEREUM_MAINNET_RPC:-}" ]]; then echo "Set ETHEREUM_MAINNET_RPC in .env" >&2 return 1 fi if [[ -z "${PRIVATE_KEY:-}" ]]; then echo "Set PRIVATE_KEY in .env" >&2 return 1 fi return 0 }