use std::{
env,
io::{self, Write},
};
use anyhow::{Context, Result};
use log::{warn, LevelFilter};
use mdbook_angular::{stop_background_process, AngularRenderer, Config};
use mdbook_renderer::RenderContext;
fn main() -> Result<()> {
init_logger();
let mut args = env::args();
let _ = args.next();
if let Some(arg) = args.next() {
if arg == "stop" {
let config =
Config::read(env::current_dir().context("Cannot access current directory")?)?;
return stop_background_process(&config);
}
warn!("Unexpected command {arg}");
}
let mut ctx = RenderContext::from_json(io::stdin())?;
AngularRenderer::new().render_mut(&mut ctx)
}
fn init_logger() {
let mut builder = env_logger::Builder::new();
builder.format(|formatter, record| {
writeln!(
formatter,
"{} [{}] ({}): {}",
chrono::Local::now().format("%Y-%m-%d %H:%M:%S"),
record.level(),
record.target(),
record.args()
)
});
if let Ok(var) = env::var("RUST_LOG") {
builder.parse_filters(&var);
} else {
builder.filter(None, LevelFilter::Info);
builder.filter(Some("html5ever"), LevelFilter::Error);
}
builder.init();
}