A dev repo for the papa cli utility ( please fix channels on the nest :'( )
use crate::{
    api::model::{InstalledMod, LocalIndex},
    core::{actions, Ctx},
};

use anyhow::Result;

pub fn remove(ctx: &Ctx, mod_names: Vec<String>) -> Result<()> {
    let mod_names = mod_names
        .into_iter()
        .map(|n| n.to_lowercase())
        .collect::<String>();
    let installed = LocalIndex::load(ctx.config.mod_dir())?;
    let valid: Vec<InstalledMod> = installed
        .mods
        .iter()
        .filter_map(|(n, v)| {
            if mod_names.contains(&n.to_lowercase()) {
                Some(v.clone())
            } else {
                None
            }
        })
        .collect();
    let paths = valid.iter().flat_map(|f| f.flatten_paths()).collect();

    actions::uninstall(paths)?;
    valid
        .iter()
        .for_each(|e| println!("Removed {}", e.package_name));
    Ok(())
}