a3s-flow 1.1.0

Durable workflow engine and Rust SDK for A3S
Documentation
use std::error::Error;
use std::io::{Error as IoError, ErrorKind};
use std::path::PathBuf;

use a3s_flow::WorkflowDsl;

fn main() -> Result<(), Box<dyn Error>> {
    let path = std::env::args_os()
        .nth(1)
        .map(PathBuf::from)
        .ok_or_else(|| {
            IoError::new(
                ErrorKind::InvalidInput,
                "usage: cargo run --example workflow_dsl_import -- <workflow.yml>",
            )
        })?;
    let source = std::fs::read_to_string(&path)?;
    let document = WorkflowDsl::from_yaml(&source)?;
    let plan = document.graph().execution_plan()?;

    println!("app={}", document.app().name());
    println!("dsl_version={}", document.version());
    println!("compatibility={:?}", document.compatibility()?);
    println!("nodes={}", document.graph().nodes().len());
    println!("edges={}", document.graph().edges().len());
    println!("scopes={}", plan.scopes().len());
    println!("execution_digest={}", document.execution_digest()?);
    Ok(())
}