use crate::command::{
analyze, build, ci, clean, coverage, docs, doctor, generate, info, install, test,
};
use clap::{Parser, Subcommand};
#[derive(clap::ValueEnum, Clone, Debug, Default)]
pub enum ColorMode {
#[default]
Auto,
Always,
Never,
}
#[derive(Parser, Debug)]
#[command(
name = "clibra",
version,
about,
propagate_version = true,
term_width = 120
)]
pub struct Cli {
#[arg(long, global = true)]
pub preset: Option<String>,
#[arg(long, value_enum, default_value = "warn", global = true)]
pub log: LogLevel,
#[arg(long, global = true)]
pub dry_run: bool,
#[arg(long, value_enum, default_value = "auto", global = true)]
pub color: ColorMode,
#[command(subcommand)]
pub command: Command,
}
#[derive(clap::ValueEnum, Clone, Debug)]
pub enum LogLevel {
Error,
Warn,
Info,
Debug,
Trace,
}
#[derive(Subcommand, Debug)]
pub enum Command {
Build(build::BuildArgs),
Install(install::InstallArgs),
Test(test::TestArgs),
Ci(ci::CiArgs),
Analyze(analyze::AnalyzeArgs),
Coverage(coverage::CoverageArgs),
Docs(docs::DocsArgs),
Clean(clean::CleanArgs),
Info(info::InfoArgs),
Doctor(doctor::DoctorArgs),
#[command(hide = true)]
Generate(generate::GenerateArgs),
}