mirror of
https://github.com/librespot-org/librespot.git
synced 2024-11-08 16:45:43 +00:00
43 lines
1 KiB
Rust
43 lines
1 KiB
Rust
use std::env;
|
|
use std::process::{Command, Stdio};
|
|
use std::path::Path;
|
|
|
|
#[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());
|
|
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),
|
|
};
|
|
}
|
|
|
|
fn main() {
|
|
let prefix = Path::new("protocol");
|
|
compile(&prefix, &[
|
|
&prefix.join("keyexchange.proto"),
|
|
&prefix.join("authentication.proto")
|
|
]).unwrap();
|
|
}
|
|
|