use clap::{Parser, Subcommand};
pub mod commands;
#[derive(Parser)]
#[command(author, version, about, long_about = None)]
pub struct Cli {
#[arg(short, long, default_value = "config.yaml")]
pub config: String,
#[command(flatten)]
pub serve_args: ServeArgs,
#[command(subcommand)]
pub command: Option<Commands>,
}
#[derive(Debug, Clone, Parser, Default)]
pub struct ServeArgs {
#[arg(long, value_name = "ADDRESS")]
pub host: Option<String>,
#[arg(long, value_name = "PORT")]
pub port: Option<u16>,
#[arg(long, value_name = "UI_PORT")]
pub ui_port: Option<u16>,
#[arg(long, value_name = "ORIGINS")]
pub cors_origins: Option<String>,
#[arg(long, value_name = "OTEL_PORT")]
pub otel_port: Option<u16>,
#[arg(long, value_name = "DISTRI_PORT")]
pub distri_port: Option<u16>,
#[arg(long, value_name = "OPEN_UI_ON_STARTUP", default_value = "true")]
pub open_ui_on_startup: Option<bool>,
}
#[derive(Subcommand)]
pub enum Commands {
Serve(ServeArgs),
List,
Sync {
#[arg(long)]
models: bool,
#[arg(long)]
providers: bool,
},
#[command(subcommand)]
Traces(commands::traces::TracesCommands),
#[command(hide = true)]
GenerateModelsJson {
#[arg(short, long, default_value = "models_data.json")]
output: String,
},
}