virtuoso-cli 0.1.2

CLI tool to control Cadence Virtuoso from anywhere, locally or remotely
Documentation
use crate::client::bridge::VirtuosoClient;
use crate::error::{Result, VirtuosoError};
use serde_json::{json, Value};

pub fn exec(code: &str, timeout: u64) -> Result<Value> {
    let client = VirtuosoClient::from_env()?;
    let result = client.execute_skill(code, Some(timeout))?;

    Ok(json!({
        "status": if result.ok() { "success" } else { "error" },
        "output": result.output,
        "errors": result.errors,
        "warnings": result.warnings,
        "execution_time": result.execution_time,
    }))
}

pub fn load(file: &str) -> Result<Value> {
    let client = VirtuosoClient::from_env()?;

    if !std::path::Path::new(file).exists() {
        return Err(VirtuosoError::NotFound(format!("file not found: {file}")));
    }

    let result = client.load_il(file)?;

    Ok(json!({
        "status": if result.ok() { "success" } else { "error" },
        "file": file,
        "output": result.output,
        "errors": result.errors,
    }))
}