diff --git a/crates/brk_cli/src/config.rs b/crates/brk_cli/src/config.rs index f67ca0850..d6190d2e9 100644 --- a/crates/brk_cli/src/config.rs +++ b/crates/brk_cli/src/config.rs @@ -13,7 +13,6 @@ use clap_derive::Parser; use color_eyre::eyre::eyre; use serde::{Deserialize, Serialize}; -use crate::services::Services; #[derive(Parser, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Deserialize, Serialize)] #[command(version, about)] @@ -33,10 +32,6 @@ pub struct Config { #[arg(long, value_name = "PATH")] brkdir: Option, - /// Activated services, default: all, saved - #[serde(default, deserialize_with = "default_on_error")] - #[arg(short, long)] - services: Option, /// Computation of computed datasets, `lazy` computes data whenever requested without saving it, `eager` computes the data once and saves it to disk, default: `lazy`, saved #[serde(default, deserialize_with = "default_on_error")] @@ -129,9 +124,6 @@ impl Config { config_saved.brkdir = Some(brkdir); } - if let Some(services) = config_args.services.take() { - config_saved.services = Some(services); - } if let Some(computation) = config_args.computation.take() { config_saved.computation = Some(computation); @@ -201,37 +193,33 @@ impl Config { } fn check(&self) { - // Only check Bitcoin directories and RPC if we're running the processor - if self.process() { - if !self.bitcoindir().is_dir() { - println!("{:?} isn't a valid directory", self.bitcoindir()); - println!("Please use the --bitcoindir parameter to set a valid path."); - println!("Run the program with '-h' for help."); - std::process::exit(1); - } - - if !self.blocksdir().is_dir() { - println!("{:?} isn't a valid directory", self.blocksdir()); - println!("Please use the --blocksdir parameter to set a valid path."); - println!("Run the program with '-h' for help."); - std::process::exit(1); - } - - if self.rpc_auth().is_err() { - println!( - "No way found to authenticate the RPC client, please either set --rpccookiefile or --rpcuser and --rpcpassword.\nRun the program with '-h' for help." - ); - std::process::exit(1); - } + if !self.bitcoindir().is_dir() { + println!("{:?} isn't a valid directory", self.bitcoindir()); + println!("Please use the --bitcoindir parameter to set a valid path."); + println!("Run the program with '-h' for help."); + std::process::exit(1); + } + + if !self.blocksdir().is_dir() { + println!("{:?} isn't a valid directory", self.blocksdir()); + println!("Please use the --blocksdir parameter to set a valid path."); + println!("Run the program with '-h' for help."); + std::process::exit(1); } - // Always check BRK directory (needed by both processor and server) if !self.brkdir().is_dir() { println!("{:?} isn't a valid directory", self.brkdir()); println!("Please use the --brkdir parameter to set a valid path."); println!("Run the program with '-h' for help."); std::process::exit(1); } + + if self.rpc_auth().is_err() { + println!( + "No way found to authenticate the RPC client, please either set --rpccookiefile or --rpcuser and --rpcpassword.\nRun the program with '-h' for help." + ); + std::process::exit(1); + } } fn read(path: &Path) -> Self { @@ -310,15 +298,6 @@ impl Config { self.outputsdir().join("hars") } - pub fn process(&self) -> bool { - self.services - .is_none_or(|m| m == Services::All || m == Services::Processor) - } - - pub fn serve(&self) -> bool { - self.services - .is_none_or(|m| m == Services::All || m == Services::Server) - } fn path_cookiefile(&self) -> PathBuf { self.rpccookiefile.as_ref().map_or_else( diff --git a/crates/brk_cli/src/lib.rs b/crates/brk_cli/src/lib.rs index ed14a5406..2b5ce02ea 100644 --- a/crates/brk_cli/src/lib.rs +++ b/crates/brk_cli/src/lib.rs @@ -4,7 +4,6 @@ use brk_core::{dot_brk_log_path, dot_brk_path}; mod config; mod run; -mod services; use run::*; diff --git a/crates/brk_cli/src/run.rs b/crates/brk_cli/src/run.rs index 59b9001be..49b231a9a 100644 --- a/crates/brk_cli/src/run.rs +++ b/crates/brk_cli/src/run.rs @@ -12,23 +12,13 @@ use crate::config::Config; pub fn run() -> color_eyre::Result<()> { let config = Config::import()?; - let rpc = if config.process() { - Some(config.rpc()?) - } else { - None - }; - + let rpc = config.rpc()?; let exit = Exit::new(); - - let parser = if config.process() && rpc.is_some() { - Some(brk_parser::Parser::new( - config.blocksdir(), - config.outputsdir(), - rpc.unwrap(), - )) - } else { - None - }; + let parser = brk_parser::Parser::new( + config.blocksdir(), + config.brkdir(), + rpc, + ); let format = config.format(); @@ -62,60 +52,42 @@ pub fn run() -> color_eyre::Result<()> { .enable_all() .build()? .block_on(async { - let server = if config.serve() { - let served_indexer = indexer.clone(); - let served_computer = computer.clone(); + // Always start the server + let served_indexer = indexer.clone(); + let served_computer = computer.clone(); - let server = Server::new(served_indexer, served_computer, config.website())?; + let server = Server::new(served_indexer, served_computer, config.website())?; - let watch = config.watch(); - let mcp = config.mcp(); - let opt = Some(tokio::spawn(async move { - server.serve(watch, mcp).await.unwrap(); - })); + let watch = config.watch(); + let mcp = config.mcp(); + let server_handle = tokio::spawn(async move { + server.serve(watch, mcp).await.unwrap(); + }); - sleep(Duration::from_secs(1)); + sleep(Duration::from_secs(1)); - opt - } else { - None - }; + // Always run the processor + loop { + wait_for_synced_node(rpc)?; - if config.process() { - if let (Some(rpc_client), Some(parser)) = (rpc, parser) { - loop { - wait_for_synced_node(rpc_client)?; + let block_count = rpc.get_block_count()?; - let block_count = rpc_client.get_block_count()?; + info!("{} blocks found.", block_count + 1); - info!("{} blocks found.", block_count + 1); + let starting_indexes = + indexer.index(&parser, rpc, &exit, config.check_collisions())?; - let starting_indexes = - indexer.index(&parser, rpc_client, &exit, config.check_collisions())?; + computer.compute(&mut indexer, starting_indexes, &exit)?; - computer.compute(&mut indexer, starting_indexes, &exit)?; + if let Some(delay) = config.delay() { + sleep(Duration::from_secs(delay)) + } - if let Some(delay) = config.delay() { - sleep(Duration::from_secs(delay)) - } + info!("Waiting for new blocks..."); - info!("Waiting for new blocks..."); - - while block_count == rpc_client.get_block_count()? { - sleep(Duration::from_secs(1)) - } - } - } else { - return Err(color_eyre::eyre::eyre!( - "RPC client and parser required for processing mode" - ))?; + while block_count == rpc.get_block_count()? { + sleep(Duration::from_secs(1)) } } - - if let Some(handle) = server { - handle.await.unwrap(); - } - - Ok(()) }) } diff --git a/crates/brk_cli/src/services.rs b/crates/brk_cli/src/services.rs deleted file mode 100644 index d06597a4b..000000000 --- a/crates/brk_cli/src/services.rs +++ /dev/null @@ -1,23 +0,0 @@ -use clap_derive::{Parser, ValueEnum}; -use serde::{Deserialize, Serialize}; - -#[derive( - Default, - Debug, - Clone, - Copy, - Parser, - ValueEnum, - Serialize, - Deserialize, - PartialEq, - Eq, - PartialOrd, - Ord, -)] -pub enum Services { - #[default] - All, - Processor, - Server, -}