pub mod apply;
pub mod compare;
pub mod completions;
pub mod generate_man;
pub mod init;
pub mod install_hooks;
pub mod plan;
pub mod report;
pub mod schema;
use clap::Args;
use std::path::PathBuf;
#[derive(Args, Debug)]
pub struct InitArgs {
#[arg(
short,
long,
value_name = "PRESET",
value_parser = clap::builder::PossibleValuesParser::new(["opensource", "enterprise", "strict"])
)]
pub preset: Option<String>,
#[arg(short, long)]
pub force: bool,
#[arg(long)]
pub non_interactive: bool,
#[arg(long)]
pub skip_checks: bool,
}
#[derive(Args, Debug)]
pub struct PlanArgs {
#[arg(short, long, default_value = "terminal")]
pub format: OutputFormat,
#[arg(
long,
value_delimiter = ',',
value_parser = clap::builder::PossibleValuesParser::new(crate::rules::constants::VALID_CATEGORIES)
)]
pub only: Option<Vec<String>>,
#[arg(
long,
value_delimiter = ',',
value_parser = clap::builder::PossibleValuesParser::new(crate::rules::constants::VALID_CATEGORIES)
)]
pub skip: Option<Vec<String>>,
#[arg(short, long, value_name = "FILE")]
pub output: Option<PathBuf>,
#[arg(long)]
pub no_cache: bool,
#[arg(long)]
pub clear_cache: bool,
#[arg(long, value_name = "DIR")]
pub cache_dir: Option<PathBuf>,
#[arg(skip)]
pub verbose: u8,
}
#[derive(Args, Debug)]
pub struct ApplyArgs {
#[arg(short, long)]
pub yes: bool,
#[arg(short, long)]
pub interactive: bool,
#[arg(long)]
pub dry_run: bool,
#[arg(
long,
value_delimiter = ',',
value_parser = clap::builder::PossibleValuesParser::new(crate::rules::constants::VALID_CATEGORIES)
)]
pub only: Option<Vec<String>>,
#[arg(
long,
value_delimiter = ',',
value_parser = clap::builder::PossibleValuesParser::new(crate::rules::constants::VALID_CATEGORIES)
)]
pub skip: Option<Vec<String>>,
#[arg(long)]
pub create_pr: Option<bool>,
#[arg(long)]
pub no_pr: bool,
#[arg(long, default_value_t = false)]
pub no_issues: bool,
}
#[derive(Args, Debug)]
pub struct ReportArgs {
#[arg(short, long, default_value = "markdown")]
pub format: ReportFormat,
#[arg(short, long, value_name = "FILE")]
pub output: Option<PathBuf>,
#[arg(long)]
pub detailed: bool,
#[arg(
long,
value_delimiter = ',',
value_parser = clap::builder::PossibleValuesParser::new(crate::rules::constants::VALID_CATEGORIES)
)]
pub only: Option<Vec<String>>,
#[arg(
long,
value_delimiter = ',',
value_parser = clap::builder::PossibleValuesParser::new(crate::rules::constants::VALID_CATEGORIES)
)]
pub skip: Option<Vec<String>>,
#[arg(long)]
pub schema: bool,
#[arg(long)]
pub validate: bool,
#[arg(long)]
pub no_cache: bool,
#[arg(long)]
pub clear_cache: bool,
#[arg(long, value_name = "DIR")]
pub cache_dir: Option<PathBuf>,
#[arg(skip)]
pub verbose: u8,
}
#[derive(Args, Debug)]
pub struct SchemaArgs {
#[arg(short, long, value_name = "FILE")]
pub output: Option<PathBuf>,
}
#[derive(Args, Debug)]
pub struct InstallHooksArgs {
#[arg(long)]
pub pre_commit: bool,
#[arg(long)]
pub pre_push: bool,
#[arg(long)]
pub all: bool,
#[arg(long)]
pub remove: bool,
#[arg(long)]
pub force: bool,
}
#[derive(Debug, Clone, PartialEq, Eq, clap::ValueEnum)]
pub enum OutputFormat {
Terminal,
Json,
Sarif,
}
#[derive(Debug, Clone, PartialEq, Eq, clap::ValueEnum)]
pub enum ReportFormat {
Html,
Markdown,
Json,
}
#[derive(Args, Debug)]
pub struct CompareArgs {
#[arg(long, value_name = "FILE")]
pub base_file: PathBuf,
#[arg(long, value_name = "FILE")]
pub head_file: PathBuf,
#[arg(short, long, default_value = "terminal")]
pub format: CompareFormat,
#[arg(short, long, value_name = "FILE")]
pub output: Option<PathBuf>,
#[arg(long)]
pub fail_on_regression: bool,
}
#[derive(Debug, Clone, PartialEq, Eq, clap::ValueEnum)]
pub enum CompareFormat {
Terminal,
Json,
Markdown,
}
#[derive(Args, Debug)]
pub struct GenerateManArgs {
#[arg(short, long, default_value = ".")]
pub output: PathBuf,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, clap::ValueEnum)]
pub enum ShellChoice {
Bash,
Zsh,
Fish,
#[value(name = "powershell")]
PowerShell,
Elvish,
Nushell,
}
#[derive(Args, Debug)]
pub struct CompletionsArgs {
#[arg(value_enum)]
pub shell: ShellChoice,
}