Port strinova proto debug feature

This commit is contained in:
xavo95 2025-05-25 00:41:42 +07:00
parent 81073a2a28
commit 316e3ee06f
Signed by: xavo95
GPG key ID: CBF8ADED6DEBB783
4 changed files with 84 additions and 46 deletions

View file

@ -7,4 +7,23 @@ edition = "2024"
version = "0.1.0" version = "0.1.0"
[workspace.dependencies] [workspace.dependencies]
byteorder = "1.5.0"
crc32fast = "1.4.2"
prettyplease = "0.2.32"
proc-macro2 = "1.0.95"
prost = "0.13.5"
prost-build = "0.13.5"
quote = "1.0.40" #
serde = { version = "1.0.219", features = ["derive"] }
serde_json = "1.0.140"
syn = "2.0.101" #
thiserror = "2.0.12"
# Internal
wicked-waifus-protocol-derive = { path = "wicked-waifus-protocol-derive" } wicked-waifus-protocol-derive = { path = "wicked-waifus-protocol-derive" }
[profile.release]
strip = true # Automatically strip symbols from the binary.
lto = true # Link-time optimization.
opt-level = 3 # Optimization level 3.
codegen-units = 1 # Maximum size reduction optimizations.

View file

@ -4,9 +4,9 @@ edition.workspace = true
version.workspace = true version.workspace = true
[dependencies] [dependencies]
syn = "2.0.100" syn.workspace = true
quote = "1.0.40" quote.workspace = true
proc-macro2 = "1.0.94" proc-macro2.workspace = true
[lib] [lib]
proc-macro = true proc-macro = true

View file

@ -3,17 +3,20 @@ name = "wicked-waifus-protocol"
edition.workspace = true edition.workspace = true
version.workspace = true version.workspace = true
[features]
debug = ["dep:serde", "dep:serde_json"]
[dependencies] [dependencies]
byteorder = "1.5.0" byteorder.workspace = true
crc32fast = "1.4.2" crc32fast.workspace = true
thiserror = "2.0.12" prost.workspace = true
prost = "0.13.5" serde = { workspace = true, optional = true }
serde = { version = "1.0.219", features = ["derive"] } serde_json = { workspace = true, optional = true }
serde_json = "1.0.140" thiserror.workspace = true
wicked-waifus-protocol-derive.workspace = true wicked-waifus-protocol-derive.workspace = true
[build-dependencies] [build-dependencies]
prost-build = "0.13.5" prettyplease.workspace = true
quote = "1.0.40" prost-build.workspace = true
syn = "2.0.100" quote.workspace = true
prettyplease = "0.2.31" syn.workspace = true

View file

@ -24,6 +24,8 @@ pub fn main() {
if Path::new(&proto_file).exists() { if Path::new(&proto_file).exists() {
println!("cargo:rerun-if-changed={proto_file}"); println!("cargo:rerun-if-changed={proto_file}");
#[cfg(feature = "debug")]
{
prost_build::Config::new() prost_build::Config::new()
.out_dir(CODEGEN_OUT_DIR) .out_dir(CODEGEN_OUT_DIR)
.default_package_filename("wicked-waifus") .default_package_filename("wicked-waifus")
@ -33,6 +35,17 @@ pub fn main() {
.unwrap(); .unwrap();
impl_dumper(Path::new("generated/wicked-waifus.rs")).unwrap(); impl_dumper(Path::new("generated/wicked-waifus.rs")).unwrap();
}
#[cfg(not(feature = "debug"))]
{
prost_build::Config::new()
.out_dir(CODEGEN_OUT_DIR)
.default_package_filename("wicked-waifus")
.type_attribute(".", "#[derive(wicked_waifus_protocol_derive::MessageID)]")
.compile_protos(&[proto_file], &["wicked-waifus"])
.unwrap();
}
impl_message_id(Path::new("generated/wicked-waifus.rs")).unwrap(); impl_message_id(Path::new("generated/wicked-waifus.rs")).unwrap();
} }
} }
@ -134,6 +147,7 @@ pub fn impl_dumper(codegen_path: &Path) -> io::Result<()> {
} }
} }
if !match_arms.is_empty() {
let generated_code = quote! { let generated_code = quote! {
pub mod proto_dumper { pub mod proto_dumper {
use prost::Message; use prost::Message;
@ -164,5 +178,7 @@ pub fn impl_dumper(codegen_path: &Path) -> io::Result<()> {
let formatted = prettyplease::unparse(&syntax_tree); let formatted = prettyplease::unparse(&syntax_tree);
let mut file = fs::OpenOptions::new().append(true).open(codegen_path)?; let mut file = fs::OpenOptions::new().append(true).open(codegen_path)?;
file.write(formatted.as_bytes())?; file.write(formatted.as_bytes())?;
}
Ok(()) Ok(())
} }