use anyhow::{Context, Result};
use iceoryx2::prelude::*;
use iceoryx2_cli::filter::Filter;
use iceoryx2_cli::output::NodeDescriptor;
use iceoryx2_cli::output::NodeList;
use iceoryx2_cli::Format;
use crate::cli::OutputFilter;
pub(crate) fn list(filter: OutputFilter, format: Format) -> Result<()> {
let mut nodes = Vec::<NodeDescriptor>::new();
Node::<ipc::Service>::list(Config::global_config(), |node| {
if filter.matches(&node) {
nodes.push(NodeDescriptor::from(&node));
}
CallbackProgression::Continue
})
.context("failed to retrieve nodes")?;
println!(
"{}",
format.as_string(&NodeList {
num: nodes.len(),
details: nodes
})?
);
Ok(())
}