1 use std::env; 2 use std::path::PathBuf; 3 use std::process::exit; 4 5 use protobuf_parse::Parser; 6 main()7fn main() { 8 let args = env::args_os() 9 .skip(1) 10 .map(PathBuf::from) 11 .collect::<Vec<_>>(); 12 13 if args.len() != 2 { 14 eprintln!( 15 "usage: {} <input.proto> <include>", 16 env::args().next().unwrap() 17 ); 18 exit(1); 19 } 20 21 eprintln!( 22 "{} is not a part of public interface", 23 env::args().next().unwrap() 24 ); 25 26 assert!(args.len() >= 2); 27 let (input, includes) = args.split_at(1); 28 let t = Parser::new() 29 .pure() 30 .includes(includes) 31 .inputs(input) 32 .parse_and_typecheck() 33 .expect("parse_and_typecheck"); 34 for fd in t.file_descriptors { 35 println!("{:#?}", fd); 36 } 37 } 38