mod command;
mod config;

use color_print::cprintln;
use std::process::ExitCode;

/// latest Firefish version as of this fishctl release
const FIREFISH_VERSION: &str = "20240613";

#[tokio::main]
async fn main() -> ExitCode {
    let res = command::run().await;

    if let Err(err) = res {
        cprintln!("<r!><bold>Error:</></>");
        println!("      raw: {:?}", err);
        println!("  message: {}", err);

        let mut err: &dyn std::error::Error = &err;

        while let Some(src) = err.source() {
            println!("caused by: {}", src);
            err = src;
        }

        return ExitCode::FAILURE;
    }

    ExitCode::SUCCESS
}