fn main() -> std::io::Result<()> {
if std::env::var("GENERATE_PROTO").is_err() {
println!("cargo:rerun-if-changed=build.rs");
return Ok(());
}
println!("cargo:rerun-if-changed=src/whatsapp.proto");
println!("cargo:warning=GENERATE_PROTO is set, regenerating proto definitions...");
let mut config = prost_build::Config::new();
config.type_attribute(".", "#[derive(serde::Serialize, serde::Deserialize)]");
config.bytes([
".whatsapp.SessionStructure.Chain.ChainKey",
".whatsapp.SessionStructure.Chain.MessageKey",
".whatsapp.SenderKeyStateStructure.SenderChainKey",
".whatsapp.SenderKeyStateStructure.SenderMessageKey",
".whatsapp.SenderKeyStateStructure.SenderSigningKey",
]);
config.field_attribute(
".whatsapp.SessionStructure.Chain.ChainKey.key",
"#[serde(skip, default)]",
);
config.field_attribute(
".whatsapp.SessionStructure.Chain.MessageKey.cipherKey",
"#[serde(skip, default)]",
);
config.field_attribute(
".whatsapp.SessionStructure.Chain.MessageKey.macKey",
"#[serde(skip, default)]",
);
config.field_attribute(
".whatsapp.SessionStructure.Chain.MessageKey.iv",
"#[serde(skip, default)]",
);
config.field_attribute(
".whatsapp.SenderKeyStateStructure.SenderChainKey.seed",
"#[serde(skip, default)]",
);
config.field_attribute(
".whatsapp.SenderKeyStateStructure.SenderMessageKey.seed",
"#[serde(skip, default)]",
);
config.field_attribute(
".whatsapp.SenderKeyStateStructure.SenderSigningKey.public",
"#[serde(skip, default)]",
);
config.field_attribute(
".whatsapp.SenderKeyStateStructure.SenderSigningKey.private",
"#[serde(skip, default)]",
);
config.out_dir("src/");
config.compile_protos(&["src/whatsapp.proto"], &["src/"])?;
Ok(())
}