use anyhow::Result; use std::process::Command; fn main() -> Result<()> { let args: Vec = std::env::args().collect(); if args.len() < 2 { eprintln!("Usage: cargo xtask build-ebpf"); std::process::exit(1); } match args[1].as_str() { "build-ebpf" => build_ebpf()?, _ => eprintln!("Unknown command: {}", args[1]), } Ok(()) } fn build_ebpf() -> Result<()> { let status = Command::new("cargo") .args(&[ "+nightly", "build", "--target=bpfel-unknown-none", "--release", "-Z", "build-std=core", "--manifest-path=packet-detector-ebpf/Cargo.toml", ]) .status()?; if !status.success() { anyhow::bail!("Failed to build eBPF program"); } Ok(()) }