use std::path::PathBuf;
#[derive(clap::Args, Debug)]
pub struct InitArgs {
#[arg(default_value = ".")]
pub path: PathBuf,
}
#[derive(clap::Args, Debug)]
pub struct DriftArgs {
#[arg(short, long, default_value = "forjar.yaml")]
pub file: PathBuf,
#[arg(short, long)]
pub machine: Option<String>,
#[arg(long, default_value = "state")]
pub state_dir: PathBuf,
#[arg(long)]
pub tripwire: bool,
#[arg(long)]
pub alert_cmd: Option<String>,
#[arg(long)]
pub auto_remediate: bool,
#[arg(long)]
pub dry_run: bool,
#[arg(long)]
pub json: bool,
#[arg(long)]
pub env_file: Option<PathBuf>,
#[arg(short = 'w', long)]
pub workspace: Option<String>,
}
#[derive(clap::Args, Debug)]
pub struct HistoryArgs {
#[arg(long, default_value = "state")]
pub state_dir: PathBuf,
#[arg(short, long)]
pub machine: Option<String>,
#[arg(short = 'n', long, default_value = "10")]
pub limit: usize,
#[arg(long)]
pub json: bool,
#[arg(long)]
pub since: Option<String>,
#[arg(long)]
pub resource: Option<String>,
}
#[derive(clap::Args, Debug)]
pub struct DestroyArgs {
#[arg(short, long, default_value = "forjar.yaml")]
pub file: PathBuf,
#[arg(short, long)]
pub machine: Option<String>,
#[arg(long)]
pub yes: bool,
#[arg(long, default_value = "state")]
pub state_dir: PathBuf,
}
#[derive(clap::Args, Debug)]
pub struct ImportArgs {
#[arg(short, long)]
pub addr: String,
#[arg(short, long, default_value = "root")]
pub user: String,
#[arg(short, long)]
pub name: Option<String>,
#[arg(short, long, default_value = "forjar.yaml")]
pub output: PathBuf,
#[arg(long, value_delimiter = ',', default_value = "packages,files,services")]
pub scan: Vec<String>,
#[arg(long)]
pub smart: bool,
}
#[derive(clap::Args, Debug)]
pub struct ShowArgs {
#[arg(short, long, default_value = "forjar.yaml")]
pub file: PathBuf,
#[arg(short, long)]
pub resource: Option<String>,
#[arg(long)]
pub json: bool,
}
#[derive(clap::Args, Debug)]
pub struct CheckArgs {
#[arg(short, long, default_value = "forjar.yaml")]
pub file: PathBuf,
#[arg(short, long)]
pub machine: Option<String>,
#[arg(short, long)]
pub resource: Option<String>,
#[arg(long)]
pub tag: Option<String>,
#[arg(long)]
pub json: bool,
}
#[derive(clap::Args, Debug)]
pub struct DiffArgs {
pub from: PathBuf,
pub to: PathBuf,
#[arg(short, long)]
pub machine: Option<String>,
#[arg(short, long)]
pub resource: Option<String>,
#[arg(long)]
pub json: bool,
}
#[derive(clap::Args, Debug)]
pub struct StackDiffArgs {
pub file1: PathBuf,
pub file2: PathBuf,
#[arg(long)]
pub json: bool,
}
#[derive(clap::Args, Debug)]
pub struct FmtArgs {
#[arg(short, long, default_value = "forjar.yaml")]
pub file: PathBuf,
#[arg(long)]
pub check: bool,
}
#[derive(clap::Args, Debug)]
pub struct LintArgs {
#[arg(short, long, default_value = "forjar.yaml")]
pub file: PathBuf,
#[arg(long)]
pub json: bool,
#[arg(long)]
pub strict: bool,
#[arg(long)]
pub fix: bool,
#[arg(long)]
pub rules: Option<PathBuf>,
#[arg(long)]
pub bashrs_version: bool,
}
#[derive(clap::Args, Debug)]
pub struct RollbackArgs {
#[arg(short, long, default_value = "forjar.yaml")]
pub file: PathBuf,
#[arg(short = 'n', long, default_value = "1")]
pub revision: u32,
#[arg(long)]
pub generation: Option<u32>,
#[arg(short, long)]
pub machine: Option<String>,
#[arg(long)]
pub dry_run: bool,
#[arg(long)]
pub yes: bool,
#[arg(long, default_value = "state")]
pub state_dir: PathBuf,
}
#[derive(clap::Args, Debug)]
pub struct AnomalyArgs {
#[arg(long, default_value = "state")]
pub state_dir: PathBuf,
#[arg(short, long)]
pub machine: Option<String>,
#[arg(long, default_value = "3")]
pub min_events: usize,
#[arg(long)]
pub json: bool,
}
#[derive(clap::Args, Debug)]
pub struct TraceArgs {
#[arg(long, default_value = "state")]
pub state_dir: PathBuf,
#[arg(short, long)]
pub machine: Option<String>,
#[arg(long)]
pub json: bool,
}
#[derive(clap::Args, Debug)]
pub struct MigrateArgs {
#[arg(short, long, default_value = "forjar.yaml")]
pub file: PathBuf,
#[arg(short, long)]
pub output: Option<PathBuf>,
}
#[derive(clap::Args, Debug)]
pub struct McpArgs {
#[arg(long)]
pub schema: bool,
}
#[derive(clap::Args, Debug)]
pub struct BenchArgs {
#[arg(long, default_value = "1000")]
pub iterations: usize,
#[arg(long)]
pub json: bool,
#[arg(long)]
pub compare: bool,
}
#[derive(clap::Args, Debug)]
pub struct OutputArgs {
#[arg(short, long, default_value = "forjar.yaml")]
pub file: PathBuf,
pub key: Option<String>,
#[arg(long)]
pub json: bool,
}
#[derive(clap::Args, Debug)]
pub struct PolicyArgs {
#[arg(short, long, default_value = "forjar.yaml")]
pub file: PathBuf,
#[arg(long)]
pub json: bool,
#[arg(long)]
pub sarif: bool,
}
#[derive(clap::Args, Debug)]
pub struct PolicyCoverageArgs {
#[arg(short, long, default_value = "forjar.yaml")]
pub file: PathBuf,
#[arg(long)]
pub json: bool,
}
#[derive(clap::Args, Debug)]
pub struct PolicyInstallArgs {
pub pack: String,
#[arg(long, default_value = "policies")]
pub output_dir: PathBuf,
#[arg(long)]
pub json: bool,
}
#[derive(clap::Args, Debug)]
pub struct ScoreArgs {
#[arg(short, long, default_value = "forjar.yaml")]
pub file: PathBuf,
#[arg(long, default_value = "qualified")]
pub status: String,
#[arg(long, default_value = "strong")]
pub idempotency: String,
#[arg(long, default_value_t = 0)]
pub budget_ms: u64,
#[arg(long)]
pub json: bool,
#[arg(long, default_value = "state")]
pub state_dir: PathBuf,
}
#[derive(clap::Args, Debug)]
pub struct ConfigMergeArgs {
pub file_a: std::path::PathBuf,
pub file_b: std::path::PathBuf,
#[arg(short, long)]
pub output: Option<std::path::PathBuf>,
#[arg(long)]
pub allow_collisions: bool,
}