use crate::args::common::ListModeExt;
use clap::Args;
use iggy::prelude::{SnapshotCompression, SystemSnapshotType};
use iggy_cli::commands::utils::login_session_expiry::LoginSessionExpiry;
#[derive(Debug, Clone, Args)]
pub(crate) struct PingArgs {
#[arg(short, long, default_value_t = 1)]
pub(crate) count: u32,
}
#[derive(Debug, Clone, Args)]
pub(crate) struct LoginArgs {
#[clap(verbatim_doc_comment)]
#[arg(value_parser = clap::value_parser!(LoginSessionExpiry), group = "store")]
pub(crate) expiry: Option<Vec<LoginSessionExpiry>>,
}
#[derive(Debug, Clone, Args)]
pub(crate) struct StatsArgs {
#[clap(short, long, value_enum, default_value_t = ListModeExt::Table)]
pub(crate) output: ListModeExt,
}
#[derive(Debug, Clone, Args)]
pub(crate) struct SnapshotArgs {
#[arg(verbatim_doc_comment, short, long, value_parser = clap::value_parser!(SnapshotCompression))]
pub(crate) compression: Option<SnapshotCompression>,
#[arg(verbatim_doc_comment, short, long, value_parser = clap::value_parser!(SystemSnapshotType), value_delimiter = ' ', num_args = 1..)]
pub(crate) snapshot_types: Option<Vec<SystemSnapshotType>>,
#[arg(verbatim_doc_comment, short, long)]
pub(crate) out_dir: Option<String>,
}