Files
harmony/opnsense-api/examples/check_package.rs
Jean-Gabriel Gill-Couture da90dc55ad
Some checks failed
Run Check Script / check (pull_request) Failing after 19s
chore: cargo fmt across workspace
2026-03-25 23:20:57 -04:00

42 lines
1.2 KiB
Rust

//! Example: check if a package is installed on OPNsense.
//!
//! ```text
//! cargo run --example check_package -- os-haproxy
//! ```
mod common;
use std::env;
#[tokio::main]
async fn main() {
let client = common::client_from_env();
let pkg_name = env::args().nth(1).unwrap_or_else(|| {
eprintln!("Usage: cargo run --example check_package -- <package_name>");
std::process::exit(1);
});
let info: serde_json::Value = client
.get_typed("core", "firmware", "info")
.await
.expect("API call failed");
let packages = info["package"].as_array();
match packages {
Some(pkgs) => {
let found = pkgs.iter().find(|p| p["name"].as_str() == Some(&pkg_name));
match found {
Some(pkg) => {
println!("Package: {}", pkg["name"]);
println!("Version: {}", pkg["version"]);
println!("Installed: {}", pkg["installed"]);
println!("Locked: {}", pkg["locked"]);
}
None => println!("{pkg_name} not found in package list"),
}
}
None => println!("Could not retrieve package list"),
}
}