alman 0.1.2

A command-line tool and TUI for managing shell aliases with intelligent suggestions
use crate::database::database_structs::{Command, Database};
use crate::ops::alias_suggestions::{AliasSuggester, AliasSuggestion};

#[derive(Debug, Clone)]
pub struct CommandWithAlias {
    pub command: Command,
    pub alias_suggestions: Vec<AliasSuggestion>,
}

pub fn get_suggestions_with_aliases(
    num: Option<usize>, 
    db: &mut Database, 
    alias_file_path: &str
) -> Vec<CommandWithAlias> {
    db.update_db();
    let commands = db.get_top_commands(num);
    
    let suggester = AliasSuggester::new(alias_file_path);
    
    commands.into_iter().map(|cmd| {
        let alias_suggestions = suggester.suggest_aliases(&cmd.command_text);
        CommandWithAlias {
            command: cmd.clone(),
            alias_suggestions,
        }
    }).collect()
}