cratex 0.2.0

execute crates directly
Documentation
use beautify::Colors;
use std::env;
use std::process;

fn main() {
    let args: Vec<String> = env::args().collect();

    if args.len() < 2 {
        println!(
            "{} {}",
            "cratex".text_gradient(&["#02f9d8", "#3e8eef"]),
            "v0.2.0".text_blue()
        );
        eprintln!(
            "{}{}{}{}",
            "usage: ".text_red(),
            "cratex ".text_green(),
            "<crate-name>".text_yellow(),
            "[@version] [args...]".text_blue()
        );
        process::exit(1);
    }

    let crate_spec = &args[1];
    let (crate_name, version) = if let Some((name, ver)) = crate_spec.split_once('@') {
        (name, Some(ver.to_string()))
    } else {
        (crate_spec.as_str(), None)
    };

    let run_args = if args.len() > 2 {
        args[2..].to_vec()
    } else {
        vec![]
    };

    if let Err(e) = cratex::run(crate_name, version, run_args) {
        eprintln!("Error: {}", e);
        process::exit(1);
    }
}