use clap::Subcommand;
pub mod shell_runner;
#[derive(Subcommand, Debug)]
pub enum CLICommand {
Version,
Init {
#[arg(long, default_value = ".leankg")]
path: String,
},
Index {
path: Option<String>,
#[arg(long, short)]
incremental: bool,
#[arg(long, short)]
lang: Option<String>,
#[arg(long)]
exclude: Option<String>,
#[arg(long, short)]
verbose: bool,
},
Query {
query: String,
#[arg(long, default_value = "name")]
kind: String,
},
Generate {
#[arg(long, short)]
template: Option<String>,
},
Serve {
#[arg(long)]
port: Option<u16>,
},
Web {
#[arg(long)]
port: Option<u16>,
},
McpStdio {
#[arg(long)]
watch: bool,
},
Impact {
file: String,
#[arg(long, default_value = "3")]
depth: u32,
},
Install,
Status,
Watch {
#[arg(long)]
path: Option<String>,
},
Quality {
#[arg(long, default_value = "50")]
min_lines: u32,
#[arg(long)]
lang: Option<String>,
},
Export {
#[arg(long, default_value = "graph.json")]
output: String,
#[arg(long, default_value = "json")]
format: String,
#[arg(long)]
file: Option<String>,
#[arg(long, default_value = "3")]
depth: u32,
},
Annotate {
element: String,
#[arg(long, short)]
description: String,
#[arg(long)]
user_story: Option<String>,
#[arg(long)]
feature: Option<String>,
},
Link {
element: String,
id: String,
#[arg(long, default_value = "story")]
kind: String,
},
SearchAnnotations {
query: String,
},
ShowAnnotations {
element: String,
},
Trace {
#[arg(long)]
feature: Option<String>,
#[arg(long)]
user_story: Option<String>,
#[arg(long, short)]
all: bool,
},
FindByDomain {
domain: String,
},
Benchmark {
#[arg(long)]
category: Option<String>,
#[arg(long, default_value = "kilo")]
cli: String,
},
Register {
name: String,
},
Unregister {
name: String,
},
List,
StatusRepo {
name: String,
},
Setup {},
Run {
command: Vec<String>,
#[arg(long)]
compress: bool,
},
DetectClusters {
#[arg(long)]
path: Option<String>,
#[arg(long, default_value = "5")]
min_hub_edges: usize,
},
ApiServe {
#[arg(long, default_value = "8081")]
port: u16,
#[arg(long)]
auth: bool,
},
ApiKey {
#[command(subcommand)]
command: ApiKeyCommand,
},
Metrics {
#[arg(long)]
since: Option<String>,
#[arg(long)]
tool: Option<String>,
#[arg(long, short)]
json: bool,
#[arg(long)]
session: bool,
#[arg(long)]
reset: bool,
#[arg(long)]
retention: Option<i32>,
#[arg(long)]
cleanup: bool,
#[arg(long)]
seed: bool,
},
}
#[derive(Subcommand, Debug)]
pub enum ApiKeyCommand {
Create {
#[arg(long)]
name: String,
},
List,
Revoke {
#[arg(long)]
id: String,
},
}