diff --git a/app/src/main.rs b/app/src/main.rs new file mode 100644 index 0000000..4e248d7 --- /dev/null +++ b/app/src/main.rs @@ -0,0 +1,53 @@ +mod cli; +mod parser; +mod tui; +mod config; +mod generator; + +use anyhow::Result; +use cli::{Cli, Commands}; +use config::Config; +use tui::TuiApp; + +#[tokio::main] +async fn main() -> Result<()> { + let cli = Cli::parse(); + let config = Config::load_or_default()?; + + match &cli.command { + Commands::Generate { command, output } => { + let parsed = parser::HelpParser::parse_command(command).await?; + if let Some(path) = output { + config::ConfigManager::export_config(&parsed, path)?; + } + println!("Successfully parsed command: {}", command); + } + Commands::Interactive { command } => { + let parsed = if let Some(cmd) = command { + parser::HelpParser::parse_command(cmd).await? + } else { + parser::HelpParser::parse_default_commands().await? + }; + let mut app = TuiApp::new(parsed, config); + app.run().await?; + } + Commands::Export { command, output } => { + let parsed = parser::HelpParser::parse_command(command).await?; + config::ConfigManager::export_config(&parsed, output)?; + } + Commands::List => { + let commands = config::ConfigManager::list_saved_configs()?; + for cmd in commands { + println!("- {}", cmd); + } + } + Commands::Run { name } => { + if let Some(parsed) = config::ConfigManager::load_config(name)? { + let mut app = TuiApp::new(parsed, config); + app.run().await?; + } + } + } + + Ok(()) +}