o- 0.4.1

Multi-Engine JavaScript Runtime
Documentation
use clap::Parser;
use o_::{AppError, args::Args, conf, report};
use std::{fs, process};

fn main() {
    if let Err(error) = _main() {
        report::print_error(&error.report());
        process::exit(1);
    }
}

fn _main() -> Result<(), AppError> {
    let home = home::home_dir().ok_or(AppError::HomeDirUnavailable)?;
    let mut config = home;
    config.push(".config");
    config.push("o-");
    config.push("config.toml");
    let args = Args::parse();
    let config_file = fs::read_to_string(&config).map_err(|source| AppError::ReadConfig {
        path: config.clone(),
        source,
    })?;
    let toolchain = conf::parse_config(&config_file)?;
    o_::process(args.command, &toolchain)
}