| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421 | 
							- #!/usr/bin/env bash
 
- # Helper script for interacting with CDK regtest environment
 
- # Run this after starting interactive_regtest_mprocs.sh
 
- # Check for environment state file first, then environment variable
 
- ENV_FILE="/tmp/cdk_regtest_env"
 
- if [ -f "$ENV_FILE" ]; then
 
-     source "$ENV_FILE"
 
- elif [ ! -z "$CDK_ITESTS_DIR" ]; then
 
-     # Environment variable is set, create state file for other sessions
 
-     echo "export CDK_ITESTS_DIR=\"$CDK_ITESTS_DIR\"" > "$ENV_FILE"
 
-     echo "export CDK_TEST_MINT_URL=\"$CDK_TEST_MINT_URL\"" >> "$ENV_FILE"
 
-     echo "export CDK_TEST_MINT_URL_2=\"$CDK_TEST_MINT_URL_2\"" >> "$ENV_FILE"
 
-     echo "export CDK_MINTD_PID=\"$CDK_MINTD_PID\"" >> "$ENV_FILE"
 
-     echo "export CDK_MINTD_LND_PID=\"$CDK_MINTD_LND_PID\"" >> "$ENV_FILE"
 
-     echo "export CDK_REGTEST_PID=\"$CDK_REGTEST_PID\"" >> "$ENV_FILE"
 
- else
 
-     echo "❌ CDK regtest environment not found!"
 
-     echo "Please run './misc/interactive_regtest_mprocs.sh' or 'just regtest' first"
 
-     exit 1
 
- fi
 
- # Validate that the environment is actually running
 
- if [ -z "$CDK_ITESTS_DIR" ] || [ ! -d "$CDK_ITESTS_DIR" ]; then
 
-     echo "❌ CDK regtest environment not found or directory missing!"
 
-     echo "Please run './misc/interactive_regtest_mprocs.sh' or 'just regtest' first"
 
-     [ -f "$ENV_FILE" ] && rm "$ENV_FILE"  # Clean up stale state file
 
-     exit 1
 
- fi
 
- show_help() {
 
-     echo "CDK Regtest Environment Helper"
 
-     echo "============================="
 
-     echo
 
-     echo "Lightning Node Commands:"
 
-     echo "  ln-cln1     <command>   - Execute command on CLN node 1"
 
-     echo "  ln-cln2     <command>   - Execute command on CLN node 2"  
 
-     echo "  ln-lnd1     <command>   - Execute command on LND node 1"
 
-     echo "  ln-lnd2     <command>   - Execute command on LND node 2"
 
-     echo
 
-     echo "Bitcoin Commands:"
 
-     echo "  btc         <command>   - Execute bitcoin-cli command"
 
-     echo "  btc-mine    [blocks]    - Mine blocks (default: 10)"
 
-     echo
 
-     echo "CDK Mint Commands:"
 
-     echo "  mint-info              - Show mint information"
 
-     echo "  mint-test              - Run integration tests"
 
-     echo "  restart-mints          - Stop, recompile, and restart both mints (log mode)"
 
-     echo 
 
-     echo "Environment Commands:"
 
-     echo "  show-env               - Show environment variables"
 
-     echo "  show-logs              - Show recent mint logs"
 
-     echo "  show-status            - Show status of all components"
 
-     echo "  logs                   - Start mprocs TUI (adapts to current mode)"
 
-     echo
 
-     echo "Environment Modes:"
 
-     echo "  just regtest           - Log tailing mode (mints auto-start, logs to files)"
 
-     echo "  just regtest-mprocs    - Direct management (mprocs controls mint processes)"
 
-     echo
 
-     echo "Examples:"
 
-     echo "  $0 ln-cln1 getinfo"
 
-     echo "  $0 ln-lnd1 getinfo"
 
-     echo "  $0 btc getblockcount"
 
-     echo "  $0 btc-mine 5"
 
-     echo "  $0 mint-info"
 
-     echo "  $0 restart-mints       # Only works in log tailing mode"
 
-     echo "  $0 logs                # Start mprocs viewer"
 
- }
 
- # Bitcoin commands
 
- btc_command() {
 
-     bitcoin-cli -regtest -rpcuser=testuser -rpcpassword=testpass -rpcport=18443 "$@"
 
- }
 
- btc_mine() {
 
-     local blocks=${1:-10}
 
-     local address=$(btc_command getnewaddress)
 
-     btc_command generatetoaddress "$blocks" "$address"
 
-     echo "Mined $blocks blocks"
 
- }
 
- # CLN commands  
 
- cln_command() {
 
-     local node=$1
 
-     shift
 
-     lightning-cli --rpc-file="$CDK_ITESTS_DIR/cln/$node/regtest/lightning-rpc" "$@"
 
- }
 
- # LND commands
 
- lnd_command() {
 
-     local node=$1
 
-     shift
 
-     local port
 
-     case $node in
 
-         "one") port=10009 ;;
 
-         "two") port=10010 ;;
 
-         *) echo "Unknown LND node: $node"; return 1 ;;
 
-     esac
 
-     
 
-     lncli --rpcserver=localhost:$port \
 
-           --tlscertpath="$CDK_ITESTS_DIR/lnd/$node/tls.cert" \
 
-           --macaroonpath="$CDK_ITESTS_DIR/lnd/$node/data/chain/bitcoin/regtest/admin.macaroon" \
 
-           "$@"
 
- }
 
- # Mint commands
 
- mint_info() {
 
-     echo "CLN Mint (Port 8085):"
 
-     curl -s "$CDK_TEST_MINT_URL/v1/info" | jq . 2>/dev/null || curl -s "$CDK_TEST_MINT_URL/v1/info"
 
-     echo
 
-     echo "LND Mint (Port 8087):"
 
-     curl -s "$CDK_TEST_MINT_URL_2/v1/info" | jq . 2>/dev/null || curl -s "$CDK_TEST_MINT_URL_2/v1/info"
 
- }
 
- mint_test() {
 
-     echo "Running integration tests..."
 
-     cargo test -p cdk-integration-tests
 
- }
 
- # Environment info
 
- show_env() {
 
-     echo "CDK Regtest Environment Variables:"
 
-     echo "================================="
 
-     echo "CDK_ITESTS_DIR=$CDK_ITESTS_DIR"
 
-     echo "CDK_TEST_MINT_URL=$CDK_TEST_MINT_URL"
 
-     echo "CDK_TEST_MINT_URL_2=$CDK_TEST_MINT_URL_2"
 
-     echo "CDK_MINTD_PID=$CDK_MINTD_PID"
 
-     echo "CDK_MINTD_LND_PID=$CDK_MINTD_LND_PID"
 
-     echo "CDK_REGTEST_PID=$CDK_REGTEST_PID"
 
- }
 
- show_logs() {
 
-     echo "=== Recent CLN Mint Logs ==="
 
-     if [ -f "$CDK_ITESTS_DIR/cln_mint/mintd.log" ]; then
 
-         tail -10 "$CDK_ITESTS_DIR/cln_mint/mintd.log"
 
-     else
 
-         echo "Log file not found"
 
-     fi
 
-     echo
 
-     echo "=== Recent LND Mint Logs ==="
 
-     if [ -f "$CDK_ITESTS_DIR/lnd_mint/mintd.log" ]; then
 
-         tail -10 "$CDK_ITESTS_DIR/lnd_mint/mintd.log"
 
-     else
 
-         echo "Log file not found"
 
-     fi
 
- }
 
- start_mprocs() {
 
-     echo "Starting mprocs log viewer..."
 
-     
 
-     if ! command -v mprocs >/dev/null 2>&1; then
 
-         echo "❌ mprocs not found! Please install it with:"
 
-         echo "   cargo install mprocs"
 
-         echo "   or your package manager"
 
-         return 1
 
-     fi
 
-     
 
-     # Check if we have the direct process management config
 
-     DIRECT_MPROCS_CONFIG="$CDK_ITESTS_DIR/mprocs.yaml"
 
-     FALLBACK_MPROCS_CONFIG="$CDK_ITESTS_DIR/mprocs_fallback.yaml"
 
-     
 
-     if [ -f "$DIRECT_MPROCS_CONFIG" ]; then
 
-         echo "Using direct process management mode..."
 
-         echo "In mprocs: 's' to start, 'k' to kill, 'r' to restart processes"
 
-         cd "$CDK_ITESTS_DIR"
 
-         mprocs --config "$DIRECT_MPROCS_CONFIG"
 
-         return
 
-     fi
 
-     
 
-     # Create fallback mprocs configuration for log tailing
 
-     cat > "$FALLBACK_MPROCS_CONFIG" << EOF
 
- procs:
 
-   cln-mint:
 
-     shell: "touch $CDK_ITESTS_DIR/cln_mint/mintd.log && tail -f $CDK_ITESTS_DIR/cln_mint/mintd.log"
 
-     autostart: true
 
-   
 
-   lnd-mint:
 
-     shell: "touch $CDK_ITESTS_DIR/lnd_mint/mintd.log && tail -f $CDK_ITESTS_DIR/lnd_mint/mintd.log"
 
-     autostart: true
 
-   
 
-   bitcoind:
 
-     shell: "touch $CDK_ITESTS_DIR/bitcoin/regtest/debug.log && tail -f $CDK_ITESTS_DIR/bitcoin/regtest/debug.log"
 
-     autostart: true
 
-   
 
-   cln-one:
 
-     shell: "while [ ! -f $CDK_ITESTS_DIR/cln/one/regtest/log ]; do sleep 1; done && tail -f $CDK_ITESTS_DIR/cln/one/regtest/log"
 
-     autostart: true
 
-   
 
-   cln-two:
 
-     shell: "while [ ! -f $CDK_ITESTS_DIR/cln/two/regtest/log ]; do sleep 1; done && tail -f $CDK_ITESTS_DIR/cln/two/regtest/log"
 
-     autostart: true
 
-   
 
-   lnd-one:
 
-     shell: "while [ ! -f $CDK_ITESTS_DIR/lnd/one/logs/bitcoin/regtest/lnd.log ]; do sleep 1; done && tail -f $CDK_ITESTS_DIR/lnd/one/logs/bitcoin/regtest/lnd.log"
 
-     autostart: true
 
-   
 
-   lnd-two:
 
-     shell: "while [ ! -f $CDK_ITESTS_DIR/lnd/two/logs/bitcoin/regtest/lnd.log ]; do sleep 1; done && tail -f $CDK_ITESTS_DIR/lnd/two/logs/bitcoin/regtest/lnd.log"
 
-     autostart: true
 
- settings:
 
-   mouse_scroll_speed: 3
 
-   proc_list_width: 20
 
-   hide_keymap_window: false
 
- EOF
 
-     echo "Using log tailing mode..."
 
-     echo "Use 'q' to quit the log viewer"
 
-     cd "$CDK_ITESTS_DIR"
 
-     mprocs --config "$FALLBACK_MPROCS_CONFIG"
 
- }
 
- show_status() {
 
-     echo "CDK Regtest Environment Status:"
 
-     echo "==============================="
 
-     
 
-     # Check processes
 
-     echo "Processes:"
 
-     if [ ! -z "$CDK_REGTEST_PID" ] && kill -0 $CDK_REGTEST_PID 2>/dev/null; then
 
-         echo "  ✓ Regtest network (PID: $CDK_REGTEST_PID)"
 
-     else
 
-         echo "  ❌ Regtest network"
 
-     fi
 
-     
 
-     if [ ! -z "$CDK_MINTD_PID" ] && kill -0 $CDK_MINTD_PID 2>/dev/null; then
 
-         echo "  ✓ CLN Mint (PID: $CDK_MINTD_PID)"
 
-     else
 
-         echo "  ❌ CLN Mint"
 
-     fi
 
-     
 
-     if [ ! -z "$CDK_MINTD_LND_PID" ] && kill -0 $CDK_MINTD_LND_PID 2>/dev/null; then
 
-         echo "  ✓ LND Mint (PID: $CDK_MINTD_LND_PID)"
 
-     else
 
-         echo "  ❌ LND Mint"
 
-     fi
 
-     
 
-     echo
 
-     echo "Network connectivity:"
 
-     if curl -s "$CDK_TEST_MINT_URL/v1/info" >/dev/null 2>&1; then
 
-         echo "  ✓ CLN Mint responding"
 
-     else
 
-         echo "  ❌ CLN Mint not responding"
 
-     fi
 
-     
 
-     if curl -s "$CDK_TEST_MINT_URL_2/v1/info" >/dev/null 2>&1; then
 
-         echo "  ✓ LND Mint responding"
 
-     else
 
-         echo "  ❌ LND Mint not responding"
 
-     fi
 
- }
 
- restart_mints() {
 
-     echo "==============================="
 
-     echo "Restarting CDK Mints"
 
-     echo "==============================="
 
-     
 
-     # Stop existing mints
 
-     echo "Stopping existing mints..."
 
-     if [ ! -z "$CDK_MINTD_PID" ] && kill -0 $CDK_MINTD_PID 2>/dev/null; then
 
-         echo "  Stopping CLN Mint (PID: $CDK_MINTD_PID)"
 
-         kill -2 $CDK_MINTD_PID
 
-         wait $CDK_MINTD_PID 2>/dev/null || true
 
-     fi
 
-     
 
-     if [ ! -z "$CDK_MINTD_LND_PID" ] && kill -0 $CDK_MINTD_LND_PID 2>/dev/null; then
 
-         echo "  Stopping LND Mint (PID: $CDK_MINTD_LND_PID)"
 
-         kill -2 $CDK_MINTD_LND_PID
 
-         wait $CDK_MINTD_LND_PID 2>/dev/null || true
 
-     fi
 
-     
 
-     # Recompile
 
-     echo "Recompiling cdk-mintd..."
 
-     if ! cargo build --bin cdk-mintd; then
 
-         echo "❌ Compilation failed"
 
-         return 1
 
-     fi
 
-     echo "✓ Compilation successful"
 
-     
 
-     # Restart CLN mint
 
-     echo "Starting CLN Mint..."
 
-     export CDK_MINTD_CLN_RPC_PATH="$CDK_ITESTS_DIR/cln/one/regtest/lightning-rpc"
 
-     export CDK_MINTD_URL="http://127.0.0.1:8085"
 
-     export CDK_MINTD_WORK_DIR="$CDK_ITESTS_DIR/cln_mint"
 
-     export CDK_MINTD_LISTEN_HOST="127.0.0.1"
 
-     export CDK_MINTD_LISTEN_PORT=8085
 
-     export CDK_MINTD_LN_BACKEND="cln"
 
-     export CDK_MINTD_MNEMONIC="eye survey guilt napkin crystal cup whisper salt luggage manage unveil loyal"
 
-     export RUST_BACKTRACE=1
 
-     
 
-     cargo run --bin cdk-mintd > "$CDK_MINTD_WORK_DIR/mintd.log" 2>&1 &
 
-     NEW_CLN_PID=$!
 
-     
 
-     # Wait for CLN mint to be ready
 
-     echo "Waiting for CLN mint to start..."
 
-     local start_time=$(date +%s)
 
-     while true; do
 
-         local current_time=$(date +%s)
 
-         local elapsed_time=$((current_time - start_time))
 
-         
 
-         if [ $elapsed_time -ge 30 ]; then
 
-             echo "❌ Timeout waiting for CLN mint"
 
-             return 1
 
-         fi
 
-         
 
-         if curl -s "http://127.0.0.1:8085/v1/info" >/dev/null 2>&1; then
 
-             echo "✓ CLN Mint ready"
 
-             break
 
-         fi
 
-         sleep 1
 
-     done
 
-     
 
-     # Restart LND mint
 
-     echo "Starting LND Mint..."
 
-     export CDK_MINTD_LND_ADDRESS="https://localhost:10010"
 
-     export CDK_MINTD_LND_CERT_FILE="$CDK_ITESTS_DIR/lnd/two/tls.cert"
 
-     export CDK_MINTD_LND_MACAROON_FILE="$CDK_ITESTS_DIR/lnd/two/data/chain/bitcoin/regtest/admin.macaroon"
 
-     export CDK_MINTD_URL="http://127.0.0.1:8087"
 
-     export CDK_MINTD_WORK_DIR="$CDK_ITESTS_DIR/lnd_mint"
 
-     export CDK_MINTD_LISTEN_HOST="127.0.0.1"
 
-     export CDK_MINTD_LISTEN_PORT=8087
 
-     export CDK_MINTD_LN_BACKEND="lnd"
 
-     export CDK_MINTD_MNEMONIC="cattle gold bind busy sound reduce tone addict baby spend february strategy"
 
-     
 
-     cargo run --bin cdk-mintd > "$CDK_MINTD_WORK_DIR/mintd.log" 2>&1 &
 
-     NEW_LND_PID=$!
 
-     
 
-     # Wait for LND mint to be ready
 
-     echo "Waiting for LND mint to start..."
 
-     start_time=$(date +%s)
 
-     while true; do
 
-         current_time=$(date +%s)
 
-         elapsed_time=$((current_time - start_time))
 
-         
 
-         if [ $elapsed_time -ge 30 ]; then
 
-             echo "❌ Timeout waiting for LND mint"
 
-             return 1
 
-         fi
 
-         
 
-         if curl -s "http://127.0.0.1:8087/v1/info" >/dev/null 2>&1; then
 
-             echo "✓ LND Mint ready"
 
-             break
 
-         fi
 
-         sleep 1
 
-     done
 
-     
 
-     # Update PIDs in state file
 
-     CDK_MINTD_PID=$NEW_CLN_PID
 
-     CDK_MINTD_LND_PID=$NEW_LND_PID
 
-     
 
-     # Update state file
 
-     echo "export CDK_ITESTS_DIR=\"$CDK_ITESTS_DIR\"" > "$ENV_FILE"
 
-     echo "export CDK_TEST_MINT_URL=\"$CDK_TEST_MINT_URL\"" >> "$ENV_FILE"
 
-     echo "export CDK_TEST_MINT_URL_2=\"$CDK_TEST_MINT_URL_2\"" >> "$ENV_FILE"
 
-     echo "export CDK_MINTD_PID=\"$CDK_MINTD_PID\"" >> "$ENV_FILE"
 
-     echo "export CDK_MINTD_LND_PID=\"$CDK_MINTD_LND_PID\"" >> "$ENV_FILE"
 
-     echo "export CDK_REGTEST_PID=\"$CDK_REGTEST_PID\"" >> "$ENV_FILE"
 
-     
 
-     echo
 
-     echo "✅ Mints restarted successfully!"
 
-     echo "  CLN Mint: http://127.0.0.1:8085 (PID: $CDK_MINTD_PID)"
 
-     echo "  LND Mint: http://127.0.0.1:8087 (PID: $CDK_MINTD_LND_PID)"
 
-     echo "==============================="
 
- }
 
- # Main command dispatcher
 
- case "$1" in
 
-     "ln-cln1")
 
-         shift
 
-         cln_command "one" "$@"
 
-         ;;
 
-     "ln-cln2") 
 
-         shift
 
-         cln_command "two" "$@"
 
-         ;;
 
-     "ln-lnd1")
 
-         shift
 
-         lnd_command "one" "$@"
 
-         ;;
 
-     "ln-lnd2")
 
-         shift  
 
-         lnd_command "two" "$@"
 
-         ;;
 
-     "btc")
 
-         shift
 
-         btc_command "$@"
 
-         ;;
 
-     "btc-mine")
 
-         shift
 
-         btc_mine "$@"
 
-         ;;
 
-     "mint-info")
 
-         mint_info
 
-         ;;
 
-     "mint-test")
 
-         mint_test
 
-         ;;
 
-     "restart-mints")
 
-         restart_mints
 
-         ;;
 
-     "show-env")
 
-         show_env
 
-         ;;
 
-     "show-logs")
 
-         show_logs
 
-         ;;
 
-     "show-status")
 
-         show_status
 
-         ;;
 
-     "logs")
 
-         start_mprocs
 
-         ;;
 
-     "help"|"-h"|"--help"|"")
 
-         show_help
 
-         ;;
 
-     *)
 
-         echo "Unknown command: $1"
 
-         echo "Run '$0 help' for available commands"
 
-         exit 1
 
-         ;;
 
- esac
 
 
  |