ontocore-plugin-markdown-export 0.18.2

Markdown documentation exporter plugin for OntoCore
Documentation
use clap::Parser;
use ontocore_catalog::IndexBuilder;
use ontocore_docs::ExportOptions;
use ontocore_plugin::ExporterPlugin;
use ontocore_plugin::PluginOutput;
use ontocore_plugin_markdown_export::MarkdownExportPlugin;
use std::path::PathBuf;

#[derive(Parser)]
#[command(name = "ontocore-plugin-markdown-export")]
struct Cli {
    #[arg(default_value = "export")]
    action: String,
    #[arg(long)]
    workspace: PathBuf,
    #[arg(long, default_value = ".ontocore/plugin-out")]
    output: PathBuf,
}

fn main() {
    let cli = Cli::parse();
    if cli.action != "export" {
        eprintln!("only export action is supported");
        std::process::exit(2);
    }
    let catalog = IndexBuilder::new().workspace(&cli.workspace).build().expect("index");
    let plugin = MarkdownExportPlugin;
    let options = ExportOptions::markdown(&cli.output);
    match plugin.export(&catalog, &cli.workspace, options) {
        Ok(_) => {
            let out = PluginOutput {
                output_paths: vec![cli.output.display().to_string()],
                ..Default::default()
            };
            println!("{}", serde_json::to_string(&out).unwrap());
        }
        Err(e) => {
            let out = PluginOutput { exit_message: Some(e.to_string()), ..Default::default() };
            println!("{}", serde_json::to_string(&out).unwrap());
            std::process::exit(1);
        }
    }
}