use anyhow::Result;
use clap::{Parser, Subcommand};
mod config;
mod db;
mod export;
mod profile_editor;
mod tui;
mod tui_app;
#[derive(Parser, Debug)]
#[command(
name = "gcc-env-manager",
about = "Manage GCC-related environment variable configurations"
)]
struct Cli {
#[command(subcommand)]
command: Option<Commands>,
}
#[derive(Subcommand, Debug)]
enum Commands {
Export {
profile: Option<String>,
#[arg(
short,
long,
default_value = "prepend",
value_parser = ["prepend", "append", "replace"]
)]
mode: String,
},
}
fn main() -> Result<()> {
let cli = Cli::parse();
match cli.command {
Some(Commands::Export { profile, mode }) => {
let op_mode = match mode.as_str() {
"prepend" => export::OperationMode::Prepend,
"append" => export::OperationMode::Append,
"replace" => export::OperationMode::Replace,
_ => export::OperationMode::Prepend, };
if let Some(profile_name) = profile {
export::export_profile(&profile_name, op_mode)?;
} else {
export::interactive_export(op_mode)?;
}
}
None => {
tui_app::run()?;
}
}
Ok(())
}