use crate::{BoxError, StandardOptions, SysexitsError};
use asimov_directory::fs::{HandleResolver, ResolveHandle};
use asimov_id::Id;
use asimov_protocol::Node;
use color_print::ceprintln;
pub async fn ping(
id: &Id,
_ticket: &Option<String>,
_flags: &StandardOptions,
) -> Result<(), BoxError> {
let node = Node::default().bind().await?.start().await?;
node.online().await;
let mut resolver = HandleResolver::default().await?;
let Some(endpoint) = resolver.resolve_first(id.clone()).await? else {
return Err(SysexitsError::EX_NOUSER.into());
};
let rtt = node.ping(endpoint).await?;
ceprintln!("<s,g>✓</> Pinged the peer in <s>{rtt:?}</> RTT");
node.terminate().await?;
Ok(())
}