use clap::{Args, Parser, Subcommand};
#[derive(Debug, Parser)]
#[command(name = "secpar", version, about)]
pub struct Cli {
#[command(flatten)]
pub global: GlobalOpts,
#[command(subcommand)]
pub command: Command,
}
#[derive(Debug, Args)]
pub struct GlobalOpts {
#[arg(long, env = "AWS_REGION", default_value = "us-east-1")]
pub region: String,
#[arg(long, env = "AWS_PROFILE")]
pub profile: Option<String>,
}
#[derive(Debug, Subcommand)]
pub enum Command {
#[command(name = "sec")]
Secret {
#[command(subcommand)]
command: SecCommand,
},
#[command(name = "par")]
Parameter {
#[command(subcommand)]
command: ParCommand,
},
#[command(name = "env")]
Env,
}
#[derive(Debug, Subcommand)]
pub enum SecCommand {
List {},
Get {
#[arg(long)]
name: Option<String>,
},
Describe {
#[arg(long)]
name: Option<String>,
},
Create {
#[arg(long)]
name: String,
#[arg(long)]
secret: String,
#[arg(long, short = 'y', default_value_t = false)]
yes: bool,
},
Apply {
#[arg(long, default_value = "./templates/secrets_template.yaml")]
path: std::path::PathBuf,
#[arg(long, short = 'y', default_value_t = false)]
yes: bool,
},
Delete {
#[arg(long)]
name: Option<String>,
#[arg(long, default_value_t = false)]
force: bool,
},
}
#[derive(Debug, Subcommand)]
pub enum ParCommand {
List {},
Get {
#[arg(long)]
name: Option<String>,
},
Create {
#[arg(long)]
name: String,
#[arg(long)]
value: String,
#[arg(long, short = 'y', default_value_t = false)]
yes: bool,
},
Delete {
#[arg(long)]
name: Option<String>,
#[arg(long, short = 'y', default_value_t = false)]
yes: bool,
},
Apply {
#[arg(long, default_value = "./templates/parameter_store_template.yaml")]
path: std::path::PathBuf,
#[arg(long, short = 'y', default_value_t = false)]
yes: bool,
},
}