use cosh_tools::computer::types::{ComputerSnapshot, SnapshotFormat};
fn main() {
let whole_app = ComputerSnapshot {
name: Some("Reports".into()),
..Default::default()
};
println!("whole app: {whole_app:?}");
let dialog_only = ComputerSnapshot {
pid: Some(4242),
selector: Some("window[name='Export…']".into()),
nth: Some(1),
..Default::default()
};
println!("dialog subtree: {dialog_only:?}");
let json_shallow = ComputerSnapshot {
name: Some("Reports".into()),
max_depth: Some(4),
format: Some(SnapshotFormat::Json),
..Default::default()
};
println!("shallow json: {json_shallow:?}");
for (label, wire) in [
("whole app (tree)", r#"{"name": "Reports"}"#),
(
"dialog subtree",
r#"{"pid": 4242, "selector": "window[name='Export…']", "nth": 1}"#,
),
(
"shallow json",
r#"{"name": "Reports", "max_depth": 4, "format": "json"}"#,
),
] {
let input: ComputerSnapshot = serde_json::from_str(wire).expect("valid wire shape");
println!("{label}: {wire} → {:?}", input);
}
}