use clap::Args;
use std::process::Command;
#[derive(Args)]
pub struct ImagesArgs {
#[arg(default_value = "all")]
pub category: String,
}
pub fn execute(registry: &str, args: ImagesArgs) -> Result<(), String> {
let reference = match args.category.as_str() {
"all" => format!("{registry}/*/*"),
cat => format!("{registry}/{cat}/*"),
};
eprintln!("$ docker images {reference}");
let status = Command::new("docker")
.args(["images", &reference])
.status()
.map_err(|e| format!("failed to run docker: {e}"))?;
if !status.success() {
return Err(format!("docker images failed with {status}"));
}
Ok(())
}