Function flowclib::dumper::dump_flow::dump_flow[][src]

pub fn dump_flow(
    flow: &Flow,
    output_dir: &Path,
    provider: &dyn Provider
) -> Result<String>

dump a flow definition that has been loaded to a file in the specified output directory

Example

use std::env;
use url::Url;
use provider::content::provider::Provider;
use provider::errors::Result;
use flowclib::model::process::Process::FlowProcess;

struct DummyProvider {}

impl Provider for DummyProvider {
    fn resolve_url(&self, url: &str, default_filename: &str, _ext: &[&str]) -> Result<(String, Option<String>)> {
        Ok((url.to_string(), None))
    }

    fn get_contents(&self, url: &str) -> Result<Vec<u8>> {
        Ok("flow = \"dummy\"\n[[input]]".as_bytes().to_owned())
    }
}

let dummy_provider = DummyProvider {};
let mut url = url::Url::from_file_path(env::current_dir().unwrap()).unwrap();
url = url.join("samples/hello-world/context.toml").unwrap();

if let FlowProcess(mut flow) = flowclib::compiler::loader::load(&url.to_string(),
                                                   &dummy_provider).unwrap() {

    // strip off filename so output_dir is where the context.toml file resides
    let output_dir = url.join("./").unwrap().to_file_path().unwrap();

    // dump the flows compiler data and dot graph into files alongside the 'context.toml'
    flowclib::dumper::dump_flow::dump_flow(&flow, &output_dir, &dummy_provider).unwrap();
}