warren-cli 0.1.5

Install any CLI tool unlimited times. Every instance is its own world.
use anyhow::{Result, bail};

use crate::config::WarrenConfig;
use crate::instance::{InstanceLayout, Launcher};
use crate::ui::theme::Theme;

pub async fn execute(config: &WarrenConfig, theme: &Theme, alias: &str, yes: bool) -> Result<()> {
    let layout = InstanceLayout::new(&config.paths.instances_dir, alias);
    if !layout.exists() { bail!("instance '{}' not found", alias); }
    if !yes {
        use dialoguer::Confirm;
        let confirm = Confirm::new()
            .with_prompt(format!("Remove instance '{}' and all its data?", alias))
            .default(false)
            .interact()?;
        if !confirm { theme.warn("Aborted."); return Ok(()); }
    }
    Launcher::uninstall(&config.paths.bin_dir, alias)?;
    layout.destroy()?;
    theme.success(&format!("Removed instance '{}'", alias));
    Ok(())
}