ferium 4.1.4

Fast CLI program for managing Minecraft mods and modpacks from Modrinth, CurseForge, and Github Releases
use super::check_output_directory;
use crate::THEME;
use anyhow::Result;
use colored::Colorize;
use dialoguer::Confirm;
use libium::{config::structs::Modpack, file_picker::pick_folder};
use std::path::PathBuf;

pub async fn configure(
    modpack: &mut Modpack,
    output_dir: Option<PathBuf>,
    install_overrides: Option<bool>,
) -> Result<()> {
    match output_dir {
        Some(output_dir) => {
            check_output_directory(&output_dir).await?;
            modpack.output_dir = output_dir.clone();
        },
        None => {
            if let Some(dir) = pick_folder(&modpack.output_dir, "Pick an output directory").await {
                check_output_directory(&dir).await?;
                modpack.output_dir = dir;
            }
        },
    }
    match install_overrides {
        Some(install_overrides) => modpack.install_overrides = install_overrides,
        None => {
            let install_overrides = Confirm::with_theme(&*THEME)
                .default(modpack.install_overrides)
                .with_prompt("Should overrides be installed?")
                .interact()?;
            if install_overrides {
                println!(
                    "{}",
                    "WARNING: Configs in your output directory may be overwritten by modpack overrides"
                        .yellow()
                        .bold()
                );
            }
            modpack.install_overrides = install_overrides;
        },
    }
    Ok(())
}