use std::path::PathBuf;
use clap::{Parser, Subcommand};
#[derive(Parser, Debug, Clone)]
pub struct AuthOpts {
#[clap(
short = 'u',
long = "user",
env = "WASH_REG_USER",
hide_env_values = true
)]
pub user: Option<String>,
#[clap(
short = 'p',
long = "password",
env = "WASH_REG_PASSWORD",
hide_env_values = true
)]
pub password: Option<String>,
#[clap(long = "insecure")]
pub insecure: bool,
#[clap(long = "insecure-skip-tls-verify")]
pub insecure_skip_tls_verify: bool,
}
#[derive(Debug, Clone, Subcommand)]
pub enum RegistryCommand {
#[clap(name = "pull")]
Pull(RegistryPullCommand),
#[clap(name = "push")]
Push(RegistryPushCommand),
}
#[derive(Parser, Debug, Clone)]
pub struct RegistryPullCommand {
#[clap(name = "url")]
pub url: String,
#[clap(long = "destination")]
pub destination: Option<String>,
#[clap(short = 'r', long = "registry", env = "WASH_REG_URL")]
pub registry: Option<String>,
#[clap(short = 'd', long = "digest")]
pub digest: Option<String>,
#[clap(long = "allow-latest")]
pub allow_latest: bool,
#[clap(flatten)]
pub opts: AuthOpts,
}
#[derive(Parser, Debug, Clone)]
pub struct RegistryPushCommand {
#[clap(name = "url")]
pub url: String,
#[clap(name = "artifact")]
pub artifact: String,
#[clap(short = 'r', long = "registry", env = "WASH_REG_URL")]
pub registry: Option<String>,
#[clap(short = 'c', long = "config")]
pub config: Option<PathBuf>,
#[clap(long = "allow-latest")]
pub allow_latest: bool,
#[clap(short = 'a', long = "annotation", name = "annotations")]
pub annotations: Option<Vec<String>>,
#[clap(flatten)]
pub opts: AuthOpts,
}