ontology/src/main.rs

43 lines
1.0 KiB
Rust

mod tracer;
use std::path::PathBuf;
use clap::{Parser, Subcommand};
#[derive(Parser, Debug)]
struct Cli {
#[command(subcommand)]
cmd: Subcommands,
}
#[derive(Subcommand, Debug, Clone)]
enum Subcommands {
Run {
#[arg(short, long)]
output: Option<PathBuf>,
cmd: Vec<String>,
}
}
fn main() {
env_logger::init();
let cli = Cli::parse();
match cli.cmd {
Subcommands::Run { output, cmd } => {
let fp: Box<dyn std::io::Write> = if let Some(output) = &output {
Box::new(std::fs::File::options().write(true).create(true).open(output).unwrap())
} else {
Box::new(std::io::stdout())
};
let mut t = tracer::Tracer::new().unwrap();
t.start_root_process(cmd).unwrap();
if output.is_none() {
serde_json::to_writer_pretty(fp, &t.log).unwrap();
} else {
serde_json::to_writer(fp, &t.log).unwrap();
}
}
}
}