use std::path::PathBuf;
#[derive(clap::Args, Debug)]
pub struct PlanArgs {
#[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(short, long)]
pub tag: Option<String>,
#[arg(short, long)]
pub group: Option<String>,
#[arg(long, default_value = "state")]
pub state_dir: PathBuf,
#[arg(long)]
pub json: bool,
#[arg(long)]
pub output_dir: Option<PathBuf>,
#[arg(long)]
pub env_file: Option<PathBuf>,
#[arg(short = 'w', long)]
pub workspace: Option<String>,
#[arg(long)]
pub no_diff: bool,
#[arg(long)]
pub target: Option<String>,
#[arg(long)]
pub cost: bool,
#[arg(long = "what-if", value_name = "KEY=VALUE")]
pub what_if: Vec<String>,
#[arg(long)]
pub out: Option<PathBuf>,
#[arg(long)]
pub why: bool,
}
#[derive(clap::Args, Debug)]
pub struct PlanCompactArgs {
#[arg(short, long, default_value = "forjar.yaml")]
pub file: PathBuf,
#[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 MakeArgs {
pub goals: Vec<String>,
#[arg(short, long, default_value = "forjar.yaml")]
pub file: PathBuf,
#[arg(short = 'n', long)]
pub dry_run: bool,
#[arg(short = 'B', long = "always-make")]
pub always_make: bool,
#[arg(short = 'j', long)]
pub jobs: Option<usize>,
#[arg(short, long)]
pub param: Vec<String>,
#[arg(long, default_value = "state")]
pub state_dir: PathBuf,
#[arg(short, long)]
pub machine: Option<String>,
#[arg(long)]
pub no_tripwire: bool,
#[arg(long)]
pub yes: bool,
#[arg(long)]
pub json: bool,
}
#[derive(clap::Args, Debug)]
pub struct ImportMakefileArgs {
#[arg(default_value = "Makefile")]
pub makefile: PathBuf,
#[arg(short, long, default_value = "-")]
pub output: PathBuf,
#[arg(short, long, default_value = "local")]
pub machine: String,
}