60 lines
1.8 KiB
Rust
60 lines
1.8 KiB
Rust
use std::process::Command;
|
||
|
||
use prost_build::Config;
|
||
fn main() {
|
||
// 获取构建的profile
|
||
let profile = std::env::var("PROFILE").unwrap();
|
||
println!("profile: {}", profile);
|
||
|
||
// 如果是release模式,不重新生成
|
||
if profile == "release" {
|
||
return;
|
||
}
|
||
|
||
// println!("cargo:rerun-if-changed=build.rs");
|
||
#[cfg(target_os = "windows")]
|
||
{
|
||
std::env::set_var(
|
||
"PROTOC",
|
||
"../../rtsa-proto-msg/protoc/protoc-27.4-win64/bin/protoc.exe",
|
||
);
|
||
}
|
||
Config::new()
|
||
.out_dir("src/pb")
|
||
.type_attribute(
|
||
"common.Role",
|
||
"#[derive(sqlx::Type, async_graphql::Enum, serde::Serialize, serde::Deserialize)]",
|
||
)
|
||
.type_attribute(
|
||
"common.DataType",
|
||
"#[derive(sqlx::Type, async_graphql::Enum, serde::Serialize, serde::Deserialize)]",
|
||
)
|
||
.type_attribute(
|
||
"common.LineType",
|
||
"#[derive(async_graphql::Enum, serde::Serialize, serde::Deserialize)]",
|
||
)
|
||
.type_attribute(
|
||
"common.IscsStyle",
|
||
"#[derive(async_graphql::Enum, serde::Serialize, serde::Deserialize)]",
|
||
)
|
||
.type_attribute(
|
||
"common.FeatureType",
|
||
"#[derive(sqlx::Type, async_graphql::Enum, serde::Serialize, serde::Deserialize)]",
|
||
)
|
||
.compile_protos(
|
||
&[
|
||
"../../rtsa-proto-msg/src/common.proto",
|
||
"../../rtsa-proto-msg/src/iscs_graphic_data.proto",
|
||
"../../rtsa-proto-msg/src/simulation.proto",
|
||
],
|
||
&["../../rtsa-proto-msg/src/"],
|
||
)
|
||
.unwrap();
|
||
|
||
// Run cargo fmt to format the generated code
|
||
Command::new("cargo")
|
||
.args(["fmt"])
|
||
.status()
|
||
.expect("Failed to run cargo fmt on rtsa-dto");
|
||
}
|