use clap::{Parser, Subcommand};
#[derive(Parser, Debug)]
#[command(name = "stand")]
#[command(about = "A CLI tool for explicit environment variable management")]
#[command(version)]
pub struct Cli {
#[command(subcommand)]
pub command: Commands,
}
#[derive(Subcommand, Debug)]
pub enum Commands {
Init {
#[arg(short, long)]
force: bool,
#[arg(long)]
encrypt: bool,
},
Shell {
environment: String,
#[arg(short, long)]
yes: bool,
#[arg(long)]
shell: Option<String>,
},
Exec {
environment: String,
#[arg(short, long)]
yes: bool,
#[arg(trailing_var_arg = true, allow_hyphen_values = true)]
command: Vec<String>,
},
List,
Inspect {
environment: String,
#[arg(short, long)]
values: bool,
},
Set {
environment: String,
key: String,
value: Option<String>,
#[arg(short, long)]
encrypt: bool,
},
Get {
environment: String,
key: String,
},
#[command(subcommand)]
Encrypt(EncryptCommands),
Validate,
Current,
Env {
#[arg(long)]
json: bool,
#[arg(long, conflicts_with = "user_only")]
stand_only: bool,
#[arg(long, conflicts_with = "stand_only")]
user_only: bool,
},
}
#[derive(Subcommand, Debug)]
pub enum EncryptCommands {
Enable,
Disable,
}