Some checks failed
Run Check Script / check (pull_request) Failing after 19s
42 lines
1.2 KiB
Rust
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"),
|
|
}
|
|
}
|