rsbag/examples/bag_info.rs

35 lines
1.1 KiB
Rust
Raw Normal View History

2021-11-18 15:11:56 -08:00
use std::{env::args, fs::File};
use log::{error, info, trace};
use nom::Parser;
use rsbag::{index::BagIndex, reader::IoReader};
fn main() {
env_logger::init();
let args: Vec<_> = args().collect();
if args.len() != 2 {
eprintln!("Usage: {} <bag path>", args[0]);
return;
}
let bag_path = &args[1];
let bag_file = File::open(bag_path).expect("Could not open bag file");
let mut bag_reader = IoReader::new(bag_file);
match BagIndex::read_all(&mut bag_reader) {
Ok(index) => {
for conn in &index.connections {
let msgdef = conn.message_definition().unwrap();
trace!("message definition: {}", msgdef);
let parser = rsbag::message_definition::grammar::MessageDefinitionParser::new();
match parser.parse(&msgdef) {
Ok(def) => info!("message definition parsed: {}", def),
Err(err) => error!("message definition parse error: {}", err),
}
}
},
Err(err) => error!("bag parse error: {}", err),
}
}