diff --git a/rslib/build.rs b/rslib/build.rs index 8a7d2362b..061c88ca2 100644 --- a/rslib/build.rs +++ b/rslib/build.rs @@ -3,10 +3,9 @@ mod rust_interface; -use std::env; use std::fs; -use std::path::PathBuf; +use anki_proto_gen::descriptors_path; use anyhow::Result; use prost_reflect::DescriptorPool; @@ -15,7 +14,7 @@ fn main() -> Result<()> { let buildhash = fs::read_to_string("../out/buildhash").unwrap_or_default(); println!("cargo:rustc-env=BUILDHASH={buildhash}"); - let descriptors_path = env::var("DESCRIPTORS_BIN").ok().map(PathBuf::from).unwrap(); + let descriptors_path = descriptors_path(); println!("cargo:rerun-if-changed={}", descriptors_path.display()); let pool = DescriptorPool::decode(std::fs::read(descriptors_path)?.as_ref())?; rust_interface::write_rust_interface(&pool)?; diff --git a/rslib/proto/build.rs b/rslib/proto/build.rs index 5e5e1359a..e75f3367b 100644 --- a/rslib/proto/build.rs +++ b/rslib/proto/build.rs @@ -5,14 +5,12 @@ pub mod python; pub mod rust; pub mod ts; -use std::env; -use std::path::PathBuf; - +use anki_proto_gen::descriptors_path; use anki_proto_gen::get_services; use anyhow::Result; fn main() -> Result<()> { - let descriptors_path = env::var("DESCRIPTORS_BIN").ok().map(PathBuf::from); + let descriptors_path = descriptors_path(); let pool = rust::write_rust_protos(descriptors_path)?; let (_, services) = get_services(&pool); diff --git a/rslib/proto/rust.rs b/rslib/proto/rust.rs index 8a559ba8d..c3af4fe77 100644 --- a/rslib/proto/rust.rs +++ b/rslib/proto/rust.rs @@ -14,7 +14,7 @@ use anyhow::Context; use anyhow::Result; use prost_reflect::DescriptorPool; -pub fn write_rust_protos(descriptors_path: Option) -> Result { +pub fn write_rust_protos(descriptors_path: PathBuf) -> Result { set_protoc_path(); let proto_dir = PathBuf::from("../../proto"); let paths = gather_proto_paths(&proto_dir)?; @@ -49,14 +49,12 @@ pub fn write_rust_protos(descriptors_path: Option) -> Result PathBuf { + if let Ok(path) = env::var("DESCRIPTORS_BIN") { + PathBuf::from(path) + } else { + PathBuf::from(env::var("OUT_DIR").unwrap()).join("../../anki_descriptors.bin") + } +}