mirror of
https://github.com/librespot-org/librespot.git
synced 2024-11-08 16:45:43 +00:00
1ad62e6f18
Key exchange and authentication is functional. Protocol definition has been moved to separate crate to speed up build time. Various cleanups. Take login info from command line, rather than hardcoded.
45 lines
1.1 KiB
Rust
45 lines
1.1 KiB
Rust
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());
|
|
|
|
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 root = PathBuf::from(&env::var("CARGO_MANIFEST_DIR").unwrap());
|
|
let proto = root.join("proto");
|
|
compile(&proto, &[
|
|
&proto.join("keyexchange.proto"),
|
|
&proto.join("authentication.proto")
|
|
]).unwrap();
|
|
}
|
|
|