planner / src/cli.rs

raw file 1414 bytes
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>,
    },
}