use anyhow::{Context, Error, Result};
use iceoryx2::prelude::*;
use iceoryx2_cli::filter::Filter;
use iceoryx2_cli::filter::NodeIdentifier;
use iceoryx2_cli::output::NodeDescription;
use iceoryx2_cli::Format;
use crate::cli::OutputFilter;
pub(crate) fn details(
identifier: NodeIdentifier,
filter: OutputFilter,
format: Format,
) -> Result<()> {
let mut error: Option<Error> = None;
Node::<ipc::Service>::list(Config::global_config(), |node| {
if identifier.matches(&node) && filter.matches(&node) {
match format.as_string(&NodeDescription::from(&node)) {
Ok(output) => {
println!("{output}");
}
Err(e) => {
error = Some(e);
}
}
}
CallbackProgression::Continue
})
.context("failed to retrieve nodes")?;
Ok(())
}