From 161d4ba72699d954f96d3eb57fda97e05d1a0947 Mon Sep 17 00:00:00 2001 From: Joshua Oladele Date: Mon, 17 Jun 2024 18:43:56 +0100 Subject: [PATCH] refactor(fuel-core-nats): improve fuel core nats dev script This change allows creating a .env file matching the templated environment variables from .env.sample to start the fuel-core-nats service locally. --- .env.sample | 8 ++++-- Makefile | 6 ++-- scripts/run-node.sh | 40 --------------------------- scripts/start-fuel-core-nats.sh | 49 +++++++++++++++++++++++++++++++++ 4 files changed, 58 insertions(+), 45 deletions(-) delete mode 100755 scripts/run-node.sh create mode 100755 scripts/start-fuel-core-nats.sh diff --git a/.env.sample b/.env.sample index ec337a48..1ec7c9fa 100644 --- a/.env.sample +++ b/.env.sample @@ -1,2 +1,6 @@ -INFURA_API_KEY=2d0fcc5e22... -GENERATED_P2P_SECRET=930ge1d26cdd143e401923e69ca5d... +KEYPAIR=generated-p2p-secret +RELAYER=https://sepolia.infura.io/v3/infura-api-key +RELAYER_V2_LISTENING_CONTRACTS=0x768f9459E3339A1F7d59CcF24C80Eb4A711a01FB +RELAYER_DA_DEPLOY_HEIGHT=5791365 +RELAYER_LOG_PAGE_SIZE=2000 +SYNC_HEADER_BATCH_SIZE=100 diff --git a/Makefile b/Makefile index 7695a5ac..5cfa1042 100644 --- a/Makefile +++ b/Makefile @@ -27,9 +27,9 @@ setup: check-commands # ------------------------------------------------------------ # Development # ------------------------------------------------------------ - -dev/run-node: - ./scripts/run-node.sh +# Starts fuel-core-nats service +start.fuel-core-nats: + ./scripts/start-fuel-core-nats.sh dev-watch: cargo watch -- cargo run diff --git a/scripts/run-node.sh b/scripts/run-node.sh deleted file mode 100755 index 615f0965..00000000 --- a/scripts/run-node.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - -# Load environment variables from .env file -if [ -f .env ]; then - export $(grep -v '^#' .env | xargs) -else - echo ".env file not found. Please create a .env file using the '.env.sample' template and try again." - exit 1 -fi - -check_env_var() { - local var_name="$1" - local var_value="${!var_name}" - if [ -z "$var_value" ]; then - echo "Environment variable $var_name is not set. Aborting." - exit 1 - fi -} - -check_env_var "INFURA_API_KEY" -check_env_var "GENERATED_P2P_SECRET" - -ETH_RPC_ENDPOINT="https://sepolia.infura.io/v3/${INFURA_API_KEY}" -P2P_SECRET="${GENERATED_P2P_SECRET}" - -cargo run -p fuel-core-nats -- \ - --service-name "NATS Publisher Node" \ - --ip 0.0.0.0 \ - --port 4000 \ - --peering-port 30333 \ - --utxo-validation \ - --poa-instant false \ - --enable-p2p \ - --keypair $P2P_SECRET \ - --sync-header-batch-size=100 \ - --enable-relayer \ - --relayer ${ETH_RPC_ENDPOINT} \ - --relayer-v2-listening-contracts=0x768f9459E3339A1F7d59CcF24C80Eb4A711a01FB \ - --relayer-da-deploy-height=5791365 \ - --relayer-log-page-size=2000 \ diff --git a/scripts/start-fuel-core-nats.sh b/scripts/start-fuel-core-nats.sh new file mode 100755 index 00000000..d4a2ccc7 --- /dev/null +++ b/scripts/start-fuel-core-nats.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +# Load environment variables from .env file +if [ -f .env ]; then + export $(grep -v '^#' .env | xargs) +else + echo ".env file not found. Please create a .env file using the '.env.sample' template and try again." + exit 1 +fi + +# Function to check if environment variables are set +check_env_vars() { + local missing_vars=0 + + while IFS= read -r line; do + # Skip empty lines and comments + [[ -z "$line" || "$line" == \#* ]] && continue + + # Extract the key + key=$(echo "$line" | cut -d '=' -f 1) + + # Check if the key is set in the environment + if [ -z "${!key}" ]; then + echo "Environment variable $key is not set." + missing_vars=$((missing_vars + 1)) + fi + done < ".env.sample" + + return $missing_vars +} + +check_env_vars + +cargo run -p fuel-core-nats -- \ + --service-name "NATS Publisher Node" \ + --ip 0.0.0.0 \ + --port 4000 \ + --peering-port 30333 \ + --db-path tmp/fuel-core-db \ + --utxo-validation \ + --poa-instant false \ + --enable-p2p \ + --keypair $KEYPAIR \ + --sync-header-batch-size $SYNC_HEADER_BATCH_SIZE \ + --enable-relayer \ + --relayer $RELAYER \ + --relayer-v2-listening-contracts $RELAYER_V2_LISTENING_CONTRACTS \ + --relayer-da-deploy-height $RELAYER_DA_DEPLOY_HEIGHT \ + --relayer-log-page-size $RELAYER_LOG_PAGE_SIZE \