bin.rs
1 use apibara_node::o11y::init_opentelemetry; 2 use apibara_starknet::{set_ctrlc_handler, start_node, StarknetError, StartArgs}; 3 use clap::{Parser, Subcommand}; 4 use error_stack::{Result, ResultExt}; 5 use tokio_util::sync::CancellationToken; 6 7 #[cfg(not(windows))] 8 #[global_allocator] 9 static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc; 10 11 #[derive(Parser)] 12 #[command(author, version, about, long_about = None)] 13 struct Cli { 14 #[command(subcommand)] 15 command: CliCommand, 16 } 17 18 #[derive(Subcommand)] 19 enum CliCommand { 20 /// Start the StarkNet source node. 21 Start(StartArgs), 22 } 23 24 #[tokio::main] 25 async fn main() -> Result<(), StarknetError> { 26 init_opentelemetry() 27 .change_context(StarknetError) 28 .attach_printable("failed to initialize opentelemetry")?; 29 30 let cts = CancellationToken::new(); 31 set_ctrlc_handler(cts.clone()).change_context(StarknetError)?; 32 33 match Cli::parse().command { 34 CliCommand::Start(args) => start_node(args, cts).await, 35 } 36 }