change-git-user 1.2.0

Manage multiple git configurations
use crate::{write_users, Users};
use anyhow::Result;
use console::Term;
use dialoguer::{theme::ColorfulTheme, MultiSelect};
use std::path::Path;

pub fn main<P: AsRef<Path>>(
    mut users: Users,
    term: Term,
    theme: ColorfulTheme,
    path: P,
) -> Result<()> {
    let keys: Vec<_> = users.keys().map(String::from).collect();

    let selections = MultiSelect::with_theme(&theme)
        .with_prompt("Select git config(s) to delete:")
        .items(&keys)
        .interact_on(&term)?;

    for key in selections.into_iter().map(|i| &keys[i]) {
        users.remove(key);
    }

    write_users(&users, path)
}