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<String>,
/// LAN LLM port (default 8085)
#[arg(long, default_value = "8085")]
pub llm_port: u16,
#[command(subcommand)]
pub command: Option<Commands>,
}
#[derive(Subcommand, Debug)]
pub enum Commands {
New {
name: Option<String>,
#[arg(short, long, default_value = ".")]
out: String,
#[arg(long)]
llm_ip: Option<String>,
#[arg(long, default_value = "8085")]
llm_port: u16,
},
Templates,
Show {
slug: String,
},
Init {
template: String,
#[arg(short, long)]
name: Option<String>,
#[arg(short, long, default_value = ".")]
out: String,
},
Plan {
#[arg(short, long)]
idea: String,
#[arg(short, long)]
r#type: Option<String>,
#[arg(short, long)]
language: Option<String>,
#[arg(short, long, default_value = ".")]
out: String,
#[arg(long)]
llm_ip: Option<String>,
#[arg(long, default_value = "8085")]
llm_port: u16,
#[arg(long)]
constraints: Option<String>,
},
}