use std::path::PathBuf;
use clap::Args;
use pgdo::cluster::DATABASE_POSTGRES;
use pgdo::runtime::constraint::Constraint;
#[derive(Args, Debug, Default)]
pub struct ClusterArgs {
#[clap(
short = 'D',
long = "datadir",
env = "PGDATA",
value_name = "PGDATA",
default_value = "cluster",
display_order = 1
)]
pub dir: PathBuf,
}
#[derive(Args, Debug, Default)]
pub struct ClusterModeArgs {
#[clap(long = "mode", display_order = 4)]
pub mode: Option<ClusterMode>,
}
#[derive(Args, Debug, Default)]
pub struct DatabaseArgs {
#[clap(
short = 'd',
long = "database",
env = "PGDATABASE",
value_name = "PGDATABASE",
default_value = DATABASE_POSTGRES,
display_order = 2
)]
pub name: String,
}
#[derive(Args, Debug, Default)]
pub struct RuntimeArgs {
#[clap(
long = "runtime-default",
value_name = "CONSTRAINT",
display_order = 80
)]
pub fallback: Option<Constraint>,
}
#[derive(Args, Debug, Default)]
pub struct LifecycleArgs {
#[clap(long = "destroy", display_order = 100)]
pub destroy: bool,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, clap::ValueEnum)]
pub enum ClusterMode {
#[value(name = "slower-but-safer", alias = "safe")]
Slow,
#[value(name = "faster-but-less-safe", alias = "fast")]
Fast,
}
#[cfg(test)]
mod tests {
use super::ClusterModeArgs;
#[test]
fn test_cluster_mode_args_default() {
let default = ClusterModeArgs::default();
assert_eq!(default.mode, None);
}
}