mirror of
https://github.com/librespot-org/librespot.git
synced 2024-12-18 17:11:53 +00:00
42 lines
1.3 KiB
Rust
42 lines
1.3 KiB
Rust
extern crate protobuf_build;
|
|
|
|
use std::env;
|
|
use std::path::PathBuf;
|
|
use std::fs::File;
|
|
use std::io::{Read, Write};
|
|
|
|
fn main() {
|
|
let root = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap());
|
|
let out = PathBuf::from(env::var("OUT_DIR").unwrap());
|
|
let proto = root.join("proto");
|
|
|
|
let mut compiler = protobuf_build::Compiler::new(&proto, &out);
|
|
|
|
let files = ["keyexchange",
|
|
"authentication",
|
|
"mercury",
|
|
"metadata",
|
|
"pubsub",
|
|
"spirc"];
|
|
|
|
for file in &files {
|
|
compiler.compile(&((*file).to_owned() + ".proto")).unwrap();
|
|
|
|
// Hack for rust-lang/rust#18810
|
|
// Wrap the generated rust files with "pub mod { ... }", so they
|
|
// can be included.
|
|
let path = out.join(&((*file).to_owned() + ".rs"));
|
|
let contents = {
|
|
let mut src = File::open(path).unwrap();
|
|
let mut contents = Vec::new();
|
|
src.read_to_end(&mut contents).unwrap();
|
|
contents
|
|
};
|
|
|
|
let mut dst = File::create(out.join(&((*file).to_owned() + ".rs"))).unwrap();
|
|
dst.write_all(format!("pub mod {} {{\n", file).as_bytes()).unwrap();
|
|
dst.write_all(&contents).unwrap();
|
|
dst.write_all("}".as_bytes()).unwrap();
|
|
}
|
|
}
|
|
|