35 lines
1.1 KiB
Rust
35 lines
1.1 KiB
Rust
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),
|
|
}
|
|
}
|