|
@@ -1,50 +1,22 @@
|
|
|
-use std::env;
|
|
|
-use std::process::{Command, Stdio};
|
|
|
-use std::path::{Path,PathBuf};
|
|
|
-
|
|
|
-#[derive(Debug)]
|
|
|
-enum ProtobufError {
|
|
|
- IoError(::std::io::Error),
|
|
|
- Other
|
|
|
-}
|
|
|
-
|
|
|
-impl std::convert::From<::std::io::Error> for ProtobufError {
|
|
|
- fn from(e: ::std::io::Error) -> ProtobufError {
|
|
|
- ProtobufError::IoError(e)
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-fn compile(prefix : &Path, files : &[&Path]) -> Result<(),ProtobufError>{
|
|
|
- let mut c = Command::new("protoc");
|
|
|
- c.arg("--rust_out").arg(env::var("OUT_DIR").unwrap())
|
|
|
- .arg("--proto_path").arg(prefix.to_str().unwrap());
|
|
|
+extern crate protobuf_build;
|
|
|
|
|
|
- for f in files.iter() {
|
|
|
- c.arg(f.to_str().unwrap());
|
|
|
- }
|
|
|
-
|
|
|
- //c.stdout(Stdio::inherit());
|
|
|
- c.stderr(Stdio::inherit());
|
|
|
-
|
|
|
- let mut p = try!(c.spawn());
|
|
|
- let r = try!(p.wait());
|
|
|
- return match r.success() {
|
|
|
- true => Ok(()),
|
|
|
- false => Err(ProtobufError::Other),
|
|
|
- };
|
|
|
-}
|
|
|
+use std::env;
|
|
|
+use std::path::PathBuf;
|
|
|
|
|
|
fn main() {
|
|
|
- let root = PathBuf::from(&env::var("CARGO_MANIFEST_DIR").unwrap());
|
|
|
+ let root = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap());
|
|
|
+ let out = PathBuf::from(env::var("OUT_DIR").unwrap());
|
|
|
let proto = root.join("proto");
|
|
|
|
|
|
- compile(&proto, &[
|
|
|
- &proto.join("keyexchange.proto"),
|
|
|
- &proto.join("authentication.proto"),
|
|
|
- &proto.join("mercury.proto"),
|
|
|
- &proto.join("metadata.proto"),
|
|
|
- &proto.join("pubsub.proto"),
|
|
|
- &proto.join("spirc.proto"),
|
|
|
- ]).unwrap();
|
|
|
+ let mut compiler = protobuf_build::Compiler::new(&proto, &out);
|
|
|
+
|
|
|
+ for file in &["keyexchange.proto",
|
|
|
+ "authentication.proto",
|
|
|
+ "mercury.proto",
|
|
|
+ "metadata.proto",
|
|
|
+ "pubsub.proto",
|
|
|
+ "spirc.proto"] {
|
|
|
+ compiler.compile(file).unwrap();
|
|
|
+ }
|
|
|
}
|
|
|
|