mechanics-core 0.2.2

mechanics automation framework (core)
Documentation
use mechanics_core::{
    MechanicsPool, MechanicsPoolConfig,
    job::{MechanicsConfig, MechanicsJob},
};

fn main() -> std::io::Result<()> {
    let args = std::env::args().collect::<Vec<_>>();
    let (config_path, js_path) = match (args.get(1), args.get(2)) {
        (Some(p), Some(p2)) => (p, p2),
        _ => {
            #[allow(clippy::get_first)]
            let bin_name = args.get(0).map(String::as_str).unwrap_or("test-script");
            println!("Usage: {} <json_config_path> <js_path>", bin_name);
            return Ok(());
        }
    };
    let config_json = std::fs::read_to_string(config_path)?;
    let js_source = std::fs::read_to_string(js_path)?;
    let config: MechanicsConfig =
        serde_json::from_str(&config_json).map_err(std::io::Error::other)?;
    let pool = MechanicsPool::new(MechanicsPoolConfig::default()).map_err(std::io::Error::other)?;
    let job = MechanicsJob::new(js_source, serde_json::Value::Null, config)
        .map_err(std::io::Error::other)?;
    let value = pool.run(job).map_err(std::io::Error::other)?;
    let json = serde_json::to_string_pretty(&value).map_err(std::io::Error::other)?;
    println!("{}", &json);
    Ok(())
}