lookup/
lookup.rs

1use std::{env, path::Path};
2
3use ubus::UbusObject;
4
5fn main() {
6    let args: Vec<String> = env::args().collect();
7    let mut obj_path = "";
8    if args.len() > 1 {
9        obj_path = args[1].as_str();
10    }
11    let socket = Path::new("/var/run/ubus/ubus.sock");
12
13    let mut connection = match ubus::Connection::connect(&socket) {
14        Ok(connection) => connection,
15        Err(err) => {
16            eprintln!("{}: Failed to open ubus socket. {}", socket.display(), err);
17            return;
18        }
19    };
20    let mut obj_json = String::new();
21    connection
22        .lookup(obj_path, |obj| {
23            obj_json = serde_json::to_string_pretty(&obj).unwrap();
24        })
25        .unwrap();
26    let obj: UbusObject = serde_json::from_str(&obj_json).unwrap();
27    println!("{:?}", obj);
28}