use clap::Parser;
use std::path::PathBuf;
#[derive(Parser, Debug)]
pub struct StateBackendArgs {
#[clap(long, default_value = "state")]
pub state_dir: PathBuf,
#[clap(long)]
pub prefix: Option<String>,
#[clap(long)]
pub json: bool,
}
#[derive(Parser, Debug)]
pub struct RegistryListArgs {
#[clap(long)]
pub registry_dir: Option<PathBuf>,
#[clap(long)]
pub json: bool,
}
#[derive(Parser, Debug)]
pub struct CatalogListArgs {
#[clap(long)]
pub catalog_dir: Option<PathBuf>,
#[clap(long)]
pub category: Option<String>,
#[clap(long)]
pub json: bool,
}
#[derive(Parser, Debug)]
pub struct MultiConfigArgs {
#[clap(short, long, required = true)]
pub file: Vec<PathBuf>,
#[clap(long)]
pub json: bool,
}
#[derive(Parser, Debug)]
pub struct StackGraphArgs {
#[clap(short, long, required = true)]
pub file: Vec<PathBuf>,
#[clap(long)]
pub json: bool,
}
#[derive(Parser, Debug)]
pub struct InfraQueryArgs {
#[clap(short, long, default_value = "forjar.yaml")]
pub file: PathBuf,
#[clap(long, default_value = "state")]
pub state_dir: PathBuf,
#[clap(long)]
pub pattern: Option<String>,
#[clap(long = "type")]
pub resource_type: Option<String>,
#[clap(long)]
pub machine: Option<String>,
#[clap(long)]
pub tag: Option<String>,
#[clap(long)]
pub details: bool,
#[clap(long)]
pub live: bool,
#[clap(long)]
pub json: bool,
}
#[derive(Parser, Debug)]
pub struct RecipeSignArgs {
pub recipe: PathBuf,
#[clap(long)]
pub verify: bool,
#[clap(long)]
pub signer: Option<String>,
#[clap(long)]
pub pq: bool,
#[clap(long)]
pub json: bool,
}
#[derive(Parser, Debug)]
pub struct PreservationArgs {
#[clap(short, long, default_value = "forjar.yaml")]
pub file: PathBuf,
#[clap(long)]
pub json: bool,
}
#[derive(Parser, Debug)]
pub struct ParallelStackArgs {
#[clap(short, long, required = true)]
pub file: Vec<PathBuf>,
#[clap(long, default_value = "4")]
pub max_parallel: usize,
#[clap(long)]
pub json: bool,
}
#[derive(Parser, Debug)]
pub struct SagaArgs {
#[clap(short, long, required = true)]
pub file: Vec<PathBuf>,
#[clap(long, default_value = "state")]
pub state_dir: PathBuf,
#[clap(long)]
pub json: bool,
}
#[derive(Parser, Debug)]
pub struct PullAgentArgs {
#[clap(short, long, default_value = "forjar.yaml")]
pub file: PathBuf,
#[clap(long, default_value = "state")]
pub state_dir: PathBuf,
#[clap(long, default_value = "60")]
pub interval: u64,
#[clap(long)]
pub auto_apply: bool,
#[clap(long)]
pub max_iterations: Option<u64>,
#[clap(long)]
pub pull: bool,
#[clap(long)]
pub json: bool,
}
#[derive(Parser, Debug)]
pub struct AgentRegistryArgs {
#[clap(long)]
pub registry_dir: Option<PathBuf>,
#[clap(long)]
pub category: Option<String>,
#[clap(long)]
pub json: bool,
}
#[derive(clap::Args, Debug)]
pub struct ContractsArgs {
#[arg(long)]
pub coverage: bool,
#[arg(short, long, default_value = "forjar.yaml")]
pub file: PathBuf,
#[arg(long)]
pub json: bool,
}
#[derive(clap::Args, Debug)]
pub struct LogsArgs {
#[arg(long, default_value = "state")]
pub state_dir: PathBuf,
#[arg(short, long)]
pub machine: Option<String>,
#[arg(long)]
pub run: Option<String>,
#[arg(long)]
pub resource: Option<String>,
#[arg(long)]
pub failures: bool,
#[arg(long)]
pub script: bool,
#[arg(long)]
pub all_machines: bool,
#[arg(long)]
pub follow: bool,
#[arg(long)]
pub gc: bool,
#[arg(long)]
pub dry_run: bool,
#[arg(long)]
pub keep_failed: bool,
#[arg(long)]
pub json: bool,
}
#[derive(clap::Args, Debug)]
pub struct BuildArgs {
#[arg(short, long, default_value = "forjar.yaml")]
pub file: PathBuf,
#[arg(long)]
pub resource: String,
#[arg(long)]
pub load: bool,
#[arg(long)]
pub push: bool,
#[arg(long)]
pub far: bool,
#[arg(long)]
pub sandbox: bool,
#[arg(long)]
pub json: bool,
}
#[derive(clap::Args, Debug)]
pub struct OciPackArgs {
pub dir: PathBuf,
#[arg(long)]
pub tag: String,
#[arg(long, default_value = "oci-output")]
pub output: PathBuf,
#[arg(long)]
pub json: bool,
}
#[derive(clap::Args, Debug)]
pub struct QueryArgs {
pub query: Option<String>,
#[arg(long, default_value = "state")]
pub state_dir: PathBuf,
#[arg(long = "type")]
pub resource_type: Option<String>,
#[arg(long)]
pub history: bool,
#[arg(long)]
pub drift: bool,
#[arg(long)]
pub health: bool,
#[arg(long)]
pub timing: bool,
#[arg(long)]
pub churn: bool,
#[arg(long)]
pub reversibility: bool,
#[arg(short = 'G', long = "git-history")]
pub git_history: bool,
#[arg(long)]
pub json: bool,
#[arg(long)]
pub csv: bool,
#[arg(long)]
pub sql: bool,
#[arg(long)]
pub events: bool,
#[arg(long)]
pub failures: bool,
#[arg(long)]
pub since: Option<String>,
#[arg(long)]
pub status: Option<String>,
#[arg(long)]
pub run: Option<String>,
}
#[derive(clap::Args, Debug)]
pub struct RunArgs {
pub task: String,
#[arg(short, long, default_value = "forjar.yaml")]
pub file: PathBuf,
#[arg(long = "param", value_name = "KEY=VALUE")]
pub params: Vec<String>,
#[arg(long)]
pub json: bool,
}
#[derive(clap::Args, Debug)]
pub struct DistArgs {
#[arg(short, long, default_value = "forjar.yaml")]
pub file: PathBuf,
#[arg(long)]
pub installer: bool,
#[arg(long)]
pub homebrew: bool,
#[arg(long)]
pub binstall: bool,
#[arg(long)]
pub nix: bool,
#[arg(long)]
pub github_action: bool,
#[arg(long)]
pub deb: bool,
#[arg(long)]
pub rpm: bool,
#[arg(long)]
pub all: bool,
#[arg(short, long)]
pub output: Option<PathBuf>,
#[arg(long)]
pub output_dir: Option<PathBuf>,
#[arg(long)]
pub json: bool,
}
#[derive(clap::Args, Debug)]
pub struct ImageArgs {
#[arg(short, long, default_value = "forjar.yaml")]
pub file: PathBuf,
#[arg(short, long)]
pub machine: Option<String>,
#[arg(long)]
pub user_data: bool,
#[arg(long)]
pub android: bool,
#[arg(long)]
pub base: Option<PathBuf>,
#[arg(short, long)]
pub output: Option<PathBuf>,
#[arg(long, default_value = "auto-lvm")]
pub disk: String,
#[arg(long, default_value = "en_US.UTF-8")]
pub locale: String,
#[arg(long, default_value = "UTC")]
pub timezone: String,
#[arg(long)]
pub json: bool,
}