diff --git a/crates/cli/Cargo.toml b/crates/cli/Cargo.toml index d74c1d0..dd4ed97 100644 --- a/crates/cli/Cargo.toml +++ b/crates/cli/Cargo.toml @@ -11,8 +11,9 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [features] -default = ["json"] +default = ["json", "packet_capture"] json = ["dep:serde", "dep:serde_json", "gamedig/serde"] +packet_capture = ["gamedig/packet_capture"] [dependencies] clap = { version = "4.1.11", features = ["derive"] } diff --git a/crates/cli/src/main.rs b/crates/cli/src/main.rs index 526f227..6a6c6d5 100644 --- a/crates/cli/src/main.rs +++ b/crates/cli/src/main.rs @@ -38,6 +38,10 @@ struct Cli { #[arg(short, long, default_value = "generic")] output_mode: OutputMode, + #[cfg(feature = "packet_capture")] + #[arg(short, long)] + capture: Option, + /// Optional timeout settings for the server query. #[command(flatten, next_help_heading = "Timeouts")] timeout_settings: Option, @@ -177,6 +181,11 @@ fn main() -> Result<()> { // Resolve the IP address let ip = resolve_ip_or_domain(&args.ip, &mut extra_options)?; + #[cfg(feature = "packet_capture")] + unsafe { + gamedig::capture::simple_setup_capture(args.capture.clone()); + } + // Query the server using game definition, parsed IP, and user command line // flags. let result = query_with_timeout_and_extra_settings(game, &ip, args.port, args.timeout_settings, extra_options)?;