/ starknet / src / bin.rs
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  }