use std::process::Command; fn js_protos() { let output = Command::new("npm") .arg("run") .arg("build:protobuf") .output() .unwrap(); if output.status.success() { return; } else { let err = String::from_utf8(output.stderr).unwrap(); panic!("JS Protobuf build failure:\n {}", err); } } fn webpack() { let output = Command::new("npm") .arg("run") .arg("build:webpack") .output() .unwrap(); if output.status.success() { return; } else { let err = String::from_utf8(output.stderr).unwrap(); panic!("Webpack build failure:\n {}", err); } } fn main() { println!("cargo:rerun-if-changed=static/scripts/webpack.config.js"); js_protos(); webpack(); let mut config = prost_build::Config::new(); config.btree_map(&["."]); config.type_attribute(".", "#[derive(::serde::Serialize)]"); config.type_attribute(".", "#[serde(rename_all = \"camelCase\")]"); tonic_build::configure() .build_server(false) .build_client(false) .compile_with_config( config, &["proto/cofd.proto", "proto/cofd_api.proto"], &["src/", "proto/"], ) .unwrap(); }