64 lines
1.9 KiB
Rust
64 lines
1.9 KiB
Rust
use std::{
|
|
env, fs,
|
|
ops::Deref,
|
|
path::{Path, PathBuf},
|
|
};
|
|
|
|
fn out_dir() -> PathBuf {
|
|
Path::new(&env::var("OUT_DIR").expect("env")).to_path_buf()
|
|
}
|
|
|
|
fn cleanup() {
|
|
let _ = fs::remove_dir_all(out_dir());
|
|
}
|
|
|
|
fn compile() {
|
|
let proto_dir = Path::new(&env::var("CARGO_MANIFEST_DIR").expect("env")).join("proto");
|
|
let vsdir = proto_dir.join("video_streaming");
|
|
|
|
let files = &[
|
|
proto_dir.join("misc").join("common.proto"),
|
|
vsdir.join("buffered_range.proto"),
|
|
vsdir.join("client_abr_state.proto"),
|
|
vsdir.join("crypto_params.proto"),
|
|
vsdir.join("encrypted_player_request.proto"),
|
|
vsdir.join("format_initialization_metadata.proto"),
|
|
vsdir.join("live_metadata.proto"),
|
|
vsdir.join("media_capabilities.proto"),
|
|
vsdir.join("media_header.proto"),
|
|
vsdir.join("next_request_policy.proto"),
|
|
vsdir.join("onesie_header_type.proto"),
|
|
vsdir.join("onesie_header.proto"),
|
|
vsdir.join("onesie_player_request.proto"),
|
|
vsdir.join("onesie_player_response.proto"),
|
|
vsdir.join("onesie_request.proto"),
|
|
vsdir.join("playback_cookie.proto"),
|
|
vsdir.join("playback_start_policy.proto"),
|
|
vsdir.join("proxy_status.proto"),
|
|
vsdir.join("request_cancellation_policy.proto"),
|
|
vsdir.join("sabr_error.proto"),
|
|
vsdir.join("sabr_redirect.proto"),
|
|
vsdir.join("stream_protection_status.proto"),
|
|
vsdir.join("streamer_context.proto"),
|
|
vsdir.join("time_range.proto"),
|
|
vsdir.join("video_playback_abr_request.proto"),
|
|
];
|
|
|
|
let slices = files.iter().map(Deref::deref).collect::<Vec<_>>();
|
|
|
|
let out_dir = out_dir();
|
|
fs::create_dir(&out_dir).expect("create_dir");
|
|
|
|
protobuf_codegen::Codegen::new()
|
|
.pure()
|
|
.out_dir(&out_dir)
|
|
.inputs(&slices)
|
|
.include(&proto_dir)
|
|
.run()
|
|
.expect("Codegen failed.");
|
|
}
|
|
|
|
fn main() {
|
|
cleanup();
|
|
compile();
|
|
}
|