rbam 0.1.1

A blazing-fast Rust Bash Alias Manager (create, list, and remove shell aliases).
use crate::alias;
use std::fs::OpenOptions;
use std::io::{self, Write};
use std::process::Command; // Import from our alias module

pub fn list_aliases(full: bool) {
    let aliases = alias::read_aliases();

    for (name, cmd) in aliases {
        if full {
            println!("alias {}='{}'", name, cmd);
        } else {
            println!("{}", name);
        }
    }
}

pub fn exec_alias(name: &str) {
    let aliases = alias::read_aliases();

    match aliases.get(name) {
        Some(cmd) => {
            println!("Executing: {}", cmd);

            let status = Command::new("sh")
                .arg("-c")
                .arg(cmd)
                .status()
                .expect("Failed to execute command");

            if !status.success() {
                std::process::exit(status.code().unwrap_or(1));
            }
        }
        None => {
            eprintln!("Alias '{}' not found", name);
            std::process::exit(1);
        }
    }
}

pub fn add_alias() {
    print!("Name: ");
    io::stdout().flush().unwrap();

    let mut name = String::new();
    io::stdin()
        .read_line(&mut name)
        .expect("Failed to read name");
    let name = name.trim();

    if name.is_empty() {
        eprintln!("Name cannot be empty");
        return;
    }

    print!("Command: ");
    io::stdout().flush().unwrap();

    let mut cmd = String::new();
    io::stdin()
        .read_line(&mut cmd)
        .expect("Failed to read command");
    let cmd = cmd.trim();

    if cmd.is_empty() {
        eprintln!("Command cannot be empty");
        return;
    }

    let path = alias::get_aliases_path();

    let mut file = OpenOptions::new()
        .create(true)
        .append(true)
        .open(&path)
        .expect("Cannot open .bash_aliases");

    writeln!(file, "alias {}='{}'", name, cmd).expect("Cannot write to file");

    println!("✓ Added alias: {}", name);
    println!();
    println!("To use immediately, run:");
    println!("  source ~/.bash_aliases");
}