Select Git revision
generate_json.rs
generate_json.rs 1.29 KiB
use crate::presenter;
use super::{UJMTError, read};
use clap::{Arg, Command, ArgMatches, ArgAction};
pub fn init() -> Command {
Command::new("generate_json")
.about("Generate a JSON file from a Drawio XML file")
.arg(
Arg::new("file")
.help("Drawio XML file")
.action(ArgAction::Set)
)
.arg(
Arg::new("out_dir")
.short('o')
.default_value(".")
.help("output directory")
.action(ArgAction::Set),
)
}
pub fn exec(args: &ArgMatches) -> Result<(), UJMTError> {
info!("Execute Generate");
let file = args.get_one::<String>("file").unwrap();
let result = read(file).map_err(|error| UJMTError::FileInputError(error))?;
let out_dir = args.get_one::<String>("out_dir").unwrap();
debug!("Use File: \"{}\"", file);
debug!("Use Output Directory: \"{}\"", out_dir);
if file.ends_with(".drawio") || file.ends_with(".xml")
{
generate_from_xml(result, file, out_dir)
.map_err(|error| UJMTError::GenerationFailed(error))?;
}
Ok(())
}
fn generate_from_xml(text: String, out_dir: &str, out_file: &str) -> Result<(), presenter::PresenterError> {
presenter::to_json_from_xml(text, out_dir, out_file)
}