idl_builder 0.1.1

Builder for IDL language for rust.
Documentation
use anyhow::Result;
use std::{path::PathBuf, process::Command, str::FromStr};

pub struct BuildOptions<'a> {
    pub layer: Option<&'a str>,
    pub input: Option<&'a str>,
    pub output: Option<&'a str>,
}

pub fn build(options: BuildOptions) -> Result<()> {
    let layer = options.layer.unwrap_or("Main");
    let input = PathBuf::from_str(options.input.unwrap_or("."))?;
    let output = PathBuf::from_str(options.output.unwrap_or("."))?;

    let mut child = Command::new("idl")
        .arg("server")
        .arg(format!("--output={}", output.to_str().unwrap()))
        .arg(format!("--input={}", input.to_str().unwrap()))
        .arg("--language=rust")
        .arg(format!("--layer={}", layer))
        .spawn()?;

    child.wait()?;

    Ok(())
}