#[cfg(feature = "system")]
fn main() -> Result<(), Box<dyn std::error::Error>> {
use nginx_discovery::system;
println!("đ Testing NGINX Detection\n");
println!("{}", "=".repeat(60));
println!("\n1ī¸âŖ Finding nginx binary...");
match system::find_nginx() {
Ok(path) => {
println!(" â
Found nginx at: {}", path.display());
}
Err(e) => {
println!(" â nginx not found: {}", e);
println!(" đĄ Install nginx: sudo apt-get install nginx (Ubuntu/Debian)");
println!(" brew install nginx (macOS)");
return Ok(());
}
}
println!("\n2ī¸âŖ Getting nginx version...");
match system::nginx_version() {
Ok(version) => {
println!(" â
{}", version);
}
Err(e) => {
println!(" â Failed: {}", e);
}
}
println!("\n3ī¸âŖ Testing nginx configuration syntax...");
match system::test_config() {
Ok(output) => {
println!(" â
Configuration test passed");
if !output.is_empty() {
println!(" Output: {}", output.lines().next().unwrap_or(""));
}
}
Err(e) => {
println!(" â ī¸ Test failed (this is normal if nginx isn't configured)");
println!(" Error: {}", e);
}
}
println!("\n4ī¸âŖ Dumping nginx configuration...");
println!(" âšī¸ This requires root/sudo permissions");
match system::dump_config() {
Ok(config) => {
let lines: Vec<&str> = config.lines().collect();
println!(" â
Successfully dumped config");
println!(" đ Config size: {} bytes", config.len());
println!(" đ Lines: {}", lines.len());
println!(" Preview (first 5 lines):");
for line in lines.iter().take(5) {
println!(" {}", line);
}
}
Err(e) => {
println!(" â ī¸ Failed to dump config");
println!(" Error: {}", e);
println!(" đĄ Try: sudo cargo run --example test_nginx_detection --features system");
}
}
println!("\n5ī¸âŖ Testing full discovery...");
match nginx_discovery::NginxDiscovery::from_running_instance() {
Ok(discovery) => {
println!(" â
Successfully created discovery from running instance");
println!("\n đ Summary:");
println!("{}", discovery.summary());
println!("\n đ Server names:");
for name in discovery.server_names().iter().take(5) {
println!(" - {}", name);
}
println!("\n đ Listening ports:");
for port in discovery.listening_ports() {
println!(" - {}", port);
}
}
Err(e) => {
println!(" â ī¸ Discovery failed");
println!(" Error: {}", e);
}
}
println!("\n{}", "=".repeat(60));
println!("â
Testing complete!\n");
Ok(())
}
#[cfg(not(feature = "system"))]
fn main() {
eprintln!("This example requires the 'system' feature.");
eprintln!("Run with: cargo run --example test_nginx_detection --features system");
std::process::exit(1);
}