#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" SECURE_DIR_DEFAULT="${HOME}/.secure-secrets" SECRET_FILE_DEFAULT="${SECURE_DIR_DEFAULT}/chain138-keeper.env" EXPORT_FILE_DEFAULT="${PROJECT_ROOT}/.env.keeper.local" SECRET_FILE="${KEEPER_SECRET_FILE:-$SECRET_FILE_DEFAULT}" EXPORT_FILE="${KEEPER_EXPORT_FILE:-$EXPORT_FILE_DEFAULT}" FORCE=0 NO_EXPORT=0 usage() { cat <&2 usage >&2 exit 1 ;; esac done command -v openssl >/dev/null 2>&1 || { echo "openssl is required" >&2; exit 1; } command -v cast >/dev/null 2>&1 || { echo "cast is required" >&2; exit 1; } if [[ -f "$SECRET_FILE" && "$FORCE" -ne 1 ]]; then echo "Refusing to overwrite existing secret file: $SECRET_FILE" >&2 echo "Re-run with --force to replace it." >&2 exit 1 fi umask 077 mkdir -p "$(dirname "$SECRET_FILE")" chmod 700 "$(dirname "$SECRET_FILE")" 2>/dev/null || true KEEPER_PRIVATE_KEY="" KEEPER_SIGNER_ADDRESS="" for _ in $(seq 1 8); do candidate="0x$(openssl rand -hex 32)" if addr="$(cast wallet address --private-key "$candidate" 2>/dev/null)"; then KEEPER_PRIVATE_KEY="$candidate" KEEPER_SIGNER_ADDRESS="$addr" break fi done if [[ -z "$KEEPER_PRIVATE_KEY" || -z "$KEEPER_SIGNER_ADDRESS" ]]; then echo "Failed to generate a valid keeper private key" >&2 exit 1 fi cat >"$SECRET_FILE" <"$EXPORT_FILE" <