use clap::Parser;
#[derive(Debug, clap::Parser, Clone)]
#[command(author, version, about, long_about = None)]
struct Cli {
#[command(subcommand)]
command: Subcommand,
}
#[derive(Debug, clap::Subcommand, Clone)]
enum Subcommand {
Set { var: String, value: String },
Get { var: String },
Remove { var: String },
Exists { var: String, value: String },
Append { var: String, value: String },
Prepend { var: String, value: String },
RemoveFromList { var: String, value: String },
}
fn main() -> std::io::Result<()> {
let cli = Cli::parse();
match cli.command {
Subcommand::Set { var, value } => {
windows_env::set(&var, &value)?;
println!("{}={}", var, value);
}
Subcommand::Get { var } => {
let value = windows_env::get(&var)?.unwrap_or_else(|| panic!("{} not found", var));
println!("{}", value);
}
Subcommand::Remove { var } => {
windows_env::remove(&var)?;
println!("{} removed", var);
}
Subcommand::Exists { var, value } => {
let exists = windows_env::exists_in_list(&var, &value)?;
println!("{}", exists);
}
Subcommand::Append { var, value } => {
windows_env::append(&var, &value)?;
println!("appended: {} to {}", value, var);
}
Subcommand::Prepend { var, value } => {
windows_env::prepend(&var, &value)?;
println!("prepended: {} to {}", value, var);
}
Subcommand::RemoveFromList { var, value } => {
windows_env::remove_from_list(&var, &value)?;
println!("removed: {} from {}", value, var);
}
}
Ok(())
}