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: {} ", 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), } }