rustique 0.1.0

A multipurpose minecraft utility
use std::{env, path::PathBuf};

use cliclack::{confirm, intro, outro};
use config::Config;
use miette::Result;
use server_gen::api_util::ServerManager;

pub mod server_gen;
pub mod config;

#[tokio::main]
async fn main() -> Result<()> {
    let args: Vec<String> = env::args().collect();

    let action: &str = args[1].as_str();

    match action {
        "help" => help().await,
        "generate" => {
            let _ = server_gen::generate().await;
        },
        "list" => {
            let _ = Config::display_servers();
        },
        "run" => {
            let name = args.get(2).unwrap();
            let config = Config::read_from_file(Config::default_config_path()).expect("Invalid config");
            let server = Config::get_server(&config, name).unwrap();
            let _ = ServerManager::run_server(&ServerManager::new("paper", "paper").await.unwrap(), &PathBuf::from(server.clone().path)).await;
        },
        "delete" => {
            let _ = intro("Server Deletion");
            let confirm = confirm("Are you sure you want to delete this?").interact().unwrap();
            if (confirm) {
                let name = args.get(2).unwrap();
                let mut config = Config::read_from_file(Config::default_config_path()).expect("Invalid config");
                let server = Config::get_server(&mut config, name).unwrap();
                let mut config2 = Config::read_from_file(Config::default_config_path()).expect("Invalid config");
                config2.remove_server(server);
                let _ = config2.save_to_file(Config::default_config_path());
               let _ = ServerManager::delete_server(&PathBuf::from(server.clone().path)).await;
               let _ = outro("Server Deleted");
            } else {
                let _ = outro("Cancelled Deletion");
            }

            
            
        },
        _ => {
            help().await
        }
    }
    Ok(())
}

async fn help() {
    println!("
    📦Rustique Help📦
    ⎯⎯⎯⎯⎯⎯⎯⎯

    help - Display this help message
    generate - Generate a new server with prompts
    list - List all servers added to Rustique
    run <server> - Run the specified server
    delete <server> - Delete the specified server

    ⎯⎯⎯⎯⎯⎯⎯⎯
    Made by Jade with ❤️
    ");
}