file_descriptor_out_compare/
file-descriptor-out-compare.rsuse std::env;
use std::fs;
use protobuf::text_format;
use protobuf_parse::Parser;
enum Which {
Protoc,
Pure,
}
fn main() {
let args = env::args().skip(1).collect::<Vec<_>>();
let args = args.iter().map(|s| s.as_str()).collect::<Vec<_>>();
let (path, out_protoc, out_pure) = match args.as_slice() {
[path, out_protoc, out_pure] => (path, out_protoc, out_pure),
_ => panic!("wrong args"),
};
for which in [Which::Pure, Which::Protoc] {
let mut parser = Parser::new();
match which {
Which::Protoc => {
parser.protoc();
}
Which::Pure => {
parser.pure();
}
}
parser.input(path);
parser.include(".");
let fds = parser.file_descriptor_set().unwrap();
let fds = text_format::print_to_string_pretty(&fds);
let out = match which {
Which::Protoc => out_protoc,
Which::Pure => out_pure,
};
fs::write(out, fds).unwrap();
}
}