use std::ffi::OsString;
use std::time::Instant;
use log::{error, info};
use osmgraphing::Parser;
fn init_logging(verbosely: bool) {
let mut builder = env_logger::Builder::new();
builder.filter(None, log::LevelFilter::Warn);
if verbosely {
builder.filter(Some("osmgraphing"), log::LevelFilter::Info);
builder.filter(Some("parser"), log::LevelFilter::Info);
}
if let Ok(filters) = std::env::var("RUST_LOG") {
builder.parse_filters(&filters);
}
if let Ok(write_style) = std::env::var("RUST_LOG_STYLE") {
builder.parse_write_style(&write_style);
}
builder.init();
}
fn main() {
init_logging(true);
info!("Executing example: parser");
let path = match std::env::args_os().nth(1) {
Some(path) => path,
None => OsString::from("resources/osm/isle-of-man_2019-09-05.osm.pbf"),
};
let now = Instant::now();
let graph = match Parser::parse(&path) {
Ok(graph) => graph,
Err(msg) => {
error!("{}", msg);
return;
}
};
info!(
"Finished parsing in {} seconds ({} µs).",
now.elapsed().as_secs(),
now.elapsed().as_micros(),
);
info!("");
info!("{}", graph);
}