Skip to main content

eli_cli/
dispatch.rs

1pub async fn run() -> Result<()> {
2    tracing_subscriber::fmt()
3        .with_env_filter(
4            std::env::var("RUST_LOG")
5                .unwrap_or_else(|_| {
6                    "error,eli=warn,eli_cli=warn".to_string()
7                }),
8        )
9        .with_writer(std::io::stderr)
10        .init();
11
12    let cli = Cli::try_parse()?;
13
14    match cli.cmd {
15        None => {
16            // Default: show help. (Previously launched the chat agent; that's gone.)
17            use clap::CommandFactory as _;
18            Cli::command().print_help()?;
19            println!();
20            Ok(())
21        }
22        Some(Command::Setup) => cmd_setup().await,
23        Some(Command::Init) => cmd_init().await,
24        Some(Command::Config { set, value }) => cmd_config(set, value).await,
25        Some(Command::ToolInfo { path }) => cmd_tool_info(path),
26        Some(Command::Finance { cmd }) => cmd_finance(cmd).await,
27        Some(Command::Web { cmd }) => cmd_web(cmd).await,
28        Some(Command::Mcp(args)) => {
29            if let Some(McpSubcommand::Share(share_args)) = args.cmd {
30                cmd_mcp_share(share_args).await
31            } else if args.http {
32                cmd_mcp_http(args.port).await
33            } else {
34                cmd_mcp().await
35            }
36        }
37        Some(Command::Picks { cmd }) => cmd_picks(cmd).await,
38    }
39}
40
41async fn cmd_finance(cmd: FinanceCommand) -> Result<()> {
42    match cmd {
43        FinanceCommand::Timeseries(args) => cmd_finance_timeseries(args).await,
44        FinanceCommand::Movers(args) => cmd_finance_movers(args).await,
45        FinanceCommand::Fundamentals(args) => cmd_finance_fundamentals(args).await,
46        FinanceCommand::Search(args) => cmd_finance_search(args).await,
47        FinanceCommand::Filings(args) | FinanceCommand::Sec(args) => {
48            cmd_finance_filings(args).await
49        }
50        FinanceCommand::Schedule(args) => cmd_finance_schedule(args).await,
51        FinanceCommand::RatePath(args) => cmd_finance_rate_path(args).await,
52        FinanceCommand::Odds(args) => cmd_finance_odds(args).await,
53        FinanceCommand::Options(args) => cmd_finance_options(args).await,
54        FinanceCommand::Sync(args) => cmd_finance_sync(args).await,
55        FinanceCommand::Paper(args) => cmd_finance_paper(args).await,
56        FinanceCommand::Ibkr(args) => cmd_finance_ibkr(args).await,
57        FinanceCommand::Auctions(args) => cmd_finance_auctions(args).await,
58        FinanceCommand::Cot(args) => cmd_finance_cot(args).await,
59        FinanceCommand::Curve(args) => cmd_finance_curve(args).await,
60        FinanceCommand::Nyfed(args) => cmd_finance_nyfed(args).await,
61        FinanceCommand::Volsurface(args) => cmd_finance_volsurface(args).await,
62        FinanceCommand::Stress(args) => cmd_finance_stress(args).await,
63        FinanceCommand::Fiscal(args) => cmd_finance_fiscal(args).await,
64        FinanceCommand::Ecb(args) => cmd_finance_ecb(args).await,
65        FinanceCommand::Eia(args) => cmd_finance_eia(args).await,
66        FinanceCommand::Bis(args) => cmd_finance_bis(args).await,
67        FinanceCommand::Boj(args) => cmd_finance_boj(args).await,
68        FinanceCommand::Boe(args) => cmd_finance_boe(args).await,
69    }
70}