mod commands;
use std::path::PathBuf;
use clap::{Parser, Subcommand};
use commands::actions::ActionsArgs;
use commands::compare::CompareArgs;
use commands::import::ImportEarningsArgs;
use commands::markets::{HistoricalArgs, MonteCarloArgs};
use commands::mcp::McpArgs;
use commands::optimize::OptimizeCommand;
use commands::project::ProjectArgs;
use commands::tui::TuiArgs;
#[derive(Parser)]
#[command(version, about, arg_required_else_help = true)]
struct Cli {
#[command(subcommand)]
command: Command,
}
#[derive(Subcommand)]
enum Command {
Validate {
plan: PathBuf,
},
Project(ProjectArgs),
Actions(ActionsArgs),
Compare(CompareArgs),
Tui(TuiArgs),
#[command(subcommand)]
Optimize(OptimizeCommand),
MonteCarlo(MonteCarloArgs),
Historical(HistoricalArgs),
ImportEarnings(ImportEarningsArgs),
Mcp(McpArgs),
}
fn main() -> anyhow::Result<()> {
match Cli::parse().command {
Command::Validate { plan } => commands::run_validate(&plan),
Command::Project(args) => commands::project::run(&args),
Command::Actions(args) => commands::actions::run(&args),
Command::Compare(args) => commands::compare::run(&args),
Command::Tui(args) => commands::tui::run(&args),
Command::Optimize(command) => commands::optimize::run(&command),
Command::MonteCarlo(args) => commands::markets::run_monte_carlo(&args),
Command::Historical(args) => commands::markets::run_historical(&args),
Command::ImportEarnings(args) => commands::import::run(&args),
Command::Mcp(args) => commands::mcp::run(&args),
}
}