cargo-mextk 0.3.1

A cargo subcommand for build and working with melee mods
Documentation
use owo_colors::{OwoColorize, Style};
use structopt::StructOpt;

use cargo_mextk::SYMBOLS_PROPER_NAMES;
use cargo_mextk::Error;

fn main() {
    if let Err(err) = cargo_mextk::main(cargo_mextk::Args::from_args()) {
        eprintln!(
            "{}", 
            format!("Error: {}", err)
                .if_stderr_tty(|text| text.style(
                    Style::new().bright_red().bold()
                ))
        );

        let suggestion = "Suggestion:".bright_cyan();
        let suggestion = suggestion.bold();
        
        let example = "Example:".bright_cyan();
        let example = example.bold();
        
        let more_info = "More Info:".bright_cyan();
        let more_info = more_info.bold();

        match err {
            Error::ExitStatus(code) => std::process::exit(code),
            Error::InvalidSymbolName => {

                println!("{} use one of the following", suggestion);
                for symbol in SYMBOLS_PROPER_NAMES {
                    println!("    symbols = \"{}\"", symbol);
                }
            }
            Error::NoSuchIso => {
                println!(
                    "{} Add an iso with `cargo mextk add-iso [iso]`",
                    suggestion
                );
                println!(
                    "{} cargo mextk add-iso GALE01.iso",
                    example
                );
                println!(
                    "{} use `cargo mextk list` to list your currently managed ISO files.",
                    more_info
                );
            },
            Error::InvalidGcm => {
                println!(
                    "{} Check if the file is in the NKIT format",
                    suggestion
                );
                println!(
                    "{}: https://wiki.gbatemp.net/wiki/NKit",
                    more_info,
                );
            },
            Error::NoDatName => {
                println!("{} Try adding `dat = \"...\"` to Mextk.toml.", suggestion);
                println!("{} dat = \"GrFs.dat\"", example);
            }
            _ => ()
        }
    }
}