use clap::{Parser, Subcommand}; #[derive(Parser, Debug)] #[command(name = "planner", version, about = "Initial project planner for AI-assisted software development")] pub struct Cli { /// LAN LLM IP to use for assistance (skips the prompt) #[arg(long)] pub llm_ip: Option, /// LAN LLM port (default 8085) #[arg(long, default_value = "8085")] pub llm_port: u16, #[command(subcommand)] pub command: Option, } #[derive(Subcommand, Debug)] pub enum Commands { New { name: Option, #[arg(short, long, default_value = ".")] out: String, #[arg(long)] llm_ip: Option, #[arg(long, default_value = "8085")] llm_port: u16, }, Templates, Show { slug: String, }, Init { template: String, #[arg(short, long)] name: Option, #[arg(short, long, default_value = ".")] out: String, }, Plan { #[arg(short, long)] idea: String, #[arg(short, long)] r#type: Option, #[arg(short, long)] language: Option, #[arg(short, long, default_value = ".")] out: String, #[arg(long)] llm_ip: Option, #[arg(long, default_value = "8085")] llm_port: u16, #[arg(long)] constraints: Option, }, }