use clap::Subcommand;
use std::path::PathBuf;
#[derive(clap::Args, Debug)]
pub struct PinArgs {
#[arg(short, long, default_value = "forjar.yaml")]
pub file: PathBuf,
#[arg(long, default_value = "state")]
pub state_dir: PathBuf,
#[arg(long)]
pub update: Option<Option<String>>,
#[arg(long)]
pub check: bool,
#[arg(long)]
pub json: bool,
}
#[derive(Subcommand, Debug)]
pub enum CacheCmd {
List {
#[arg(long, default_value = "/var/lib/forjar/store")]
store_dir: PathBuf,
#[arg(long)]
json: bool,
},
Push {
remote: String,
#[arg(long, default_value = "/var/lib/forjar/store")]
store_dir: PathBuf,
#[arg(long)]
hash: Option<String>,
},
Pull {
hash: String,
#[arg(long)]
source: Option<String>,
#[arg(long, default_value = "/var/lib/forjar/store")]
store_dir: PathBuf,
},
Verify {
#[arg(long, default_value = "/var/lib/forjar/store")]
store_dir: PathBuf,
#[arg(long)]
json: bool,
},
}
#[derive(Subcommand, Debug)]
pub enum StoreCmd {
Gc {
#[arg(long, default_value = "/var/lib/forjar/store")]
store_dir: PathBuf,
#[arg(long, default_value = "state")]
state_dir: PathBuf,
#[arg(long)]
dry_run: bool,
#[arg(long)]
older_than: Option<u64>,
#[arg(long, default_value = "5")]
keep_generations: usize,
#[arg(long)]
json: bool,
},
List {
#[arg(long, default_value = "/var/lib/forjar/store")]
store_dir: PathBuf,
#[arg(long)]
show_provider: bool,
#[arg(long)]
json: bool,
},
Diff {
hash: String,
#[arg(long, default_value = "/var/lib/forjar/store")]
store_dir: PathBuf,
#[arg(long)]
json: bool,
},
Sync {
hash: String,
#[arg(long, default_value = "/var/lib/forjar/store")]
store_dir: PathBuf,
#[arg(long)]
apply: bool,
#[arg(long)]
json: bool,
},
}
#[derive(Subcommand, Debug)]
pub enum ArchiveCmd {
Pack {
hash: String,
#[arg(long, default_value = "/var/lib/forjar/store")]
store_dir: PathBuf,
#[arg(short, long)]
output: Option<PathBuf>,
},
Unpack {
file: PathBuf,
#[arg(long, default_value = "/var/lib/forjar/store")]
store_dir: PathBuf,
},
Inspect {
file: PathBuf,
#[arg(long)]
json: bool,
},
Verify {
file: PathBuf,
#[arg(long)]
json: bool,
},
}
#[derive(clap::Args, Debug)]
pub struct StoreImportArgs {
pub provider: String,
pub reference: String,
#[arg(long)]
pub version: Option<String>,
#[arg(long, default_value = "/var/lib/forjar/store")]
pub store_dir: std::path::PathBuf,
#[arg(long)]
pub json: bool,
#[arg(long)]
pub list_providers: bool,
}
#[derive(clap::Args, Debug)]
pub struct ConvertArgs {
#[arg(short, long, default_value = "forjar.yaml")]
pub file: PathBuf,
#[arg(long)]
pub reproducible: bool,
#[arg(long)]
pub apply: bool,
#[arg(long)]
pub json: bool,
}