#[macro_use]
extern crate log;
extern crate env_logger;
extern crate mdbook;
#[macro_use]
extern crate clap;
use std::process;
use std::error::Error;
use mdbook::preprocess::Preprocessor;
mod cli;
mod cfg;
mod preprocessor;
mod svgbob;
pub type Result<Ok = (), Err = Box<dyn Error>> = std::result::Result<Ok, Err>;
fn main() -> Result {
let opts = cli::init()?;
let bob = preprocessor::Bob::new();
if let Some(cli::Commands::Supports { renderer }) = opts.command {
if bob.supports_renderer(&renderer) {
process::exit(0);
} else {
process::exit(1);
}
} else if let Err(e) = bob.handle_preprocessing() {
error!("{}", e);
process::exit(1);
}
Ok(())
}