script 0.5.0

barebones http scripting
use colored::Colorize;
use macros_rs::fmt::{crashln, string};
use std::{env, fs, path::PathBuf};

pub fn cwd() -> PathBuf {
    match env::current_dir() {
        Ok(path) => path,
        Err(_) => crashln!("Unable to find current working directory"),
    }
}

pub fn read_toml<T: serde::de::DeserializeOwned>(path: String) -> T {
    let contents = match fs::read_to_string(&path) {
        Ok(contents) => contents,
        Err(err) => crashln!("Cannot find {path}.\n{}", string!(err).white()),
    };

    match toml::from_str(&contents).map_err(|err| string!(err)) {
        Ok(parsed) => parsed,
        Err(err) => crashln!("Cannot parse {path}.\n{}", err.white()),
    }
}