From 4e43eab9617c4d2ad3a77f3a6066b6a8584ceaf1 Mon Sep 17 00:00:00 2001 From: Aly Raffauf Date: Mon, 3 Aug 2026 07:36:56 -0400 Subject: [PATCH] Remove unused status module --- src/cli/status.rs | 101 ---------------------------------------------- 1 file changed, 101 deletions(-) delete mode 100644 src/cli/status.rs diff --git a/src/cli/status.rs b/src/cli/status.rs deleted file mode 100644 index e125ad1..0000000 --- a/src/cli/status.rs +++ /dev/null @@ -1,101 +0,0 @@ -use std::{io::IsTerminal, path::Path}; - -use tokio::time::{Duration, sleep}; - -use crate::app::{AppaService, FolderStatus}; - -const STATUS_REFRESH_INTERVAL: Duration = Duration::from_secs(1); - -pub(super) fn print_status( - appa: &AppaService, - folder: Option<&Path>, - json: bool, -) -> anyhow::Result<()> { - let statuses = match folder { - Some(folder) => vec![appa.status(folder)?], - None => appa.statuses()?, - }; - if json { - let folders: Vec<_> = statuses.iter().map(status_as_json).collect(); - println!("{}", serde_json::json!(folders)); - return Ok(()); - } - for status in statuses { - print_human_status(&status); - } - Ok(()) -} - -pub(super) async fn watch_status(appa: &AppaService, folder: Option<&Path>) -> anyhow::Result<()> { - loop { - if std::io::stdout().is_terminal() { - print!("\x1b[2J\x1b[H"); - } - println!("Appa status - refreshing every second; press Ctrl-C to stop\n"); - if let Err(error) = print_status(appa, folder, false) { - tracing::warn!(%error, "Could not refresh Appa status"); - } - tokio::select! { - _ = tokio::signal::ctrl_c() => return Ok(()), - _ = sleep(STATUS_REFRESH_INTERVAL) => {} - } - } -} - -fn print_human_status(status: &FolderStatus) { - let folder_path = status.folder.path.display(); - let last_successful_sync = status - .last_successful_sync - .map(|time| time.to_string()) - .unwrap_or_else(|| "never".to_owned()); - let last_sync_error = status.last_sync_error.as_deref().unwrap_or("none"); - println!( - "{folder_path}\nActive members: {member_count}\nKnown peers: {peer_count}\nFiles: {file_count}\nDirectories: {directory_count}\nTombstones: {deleted_count}\nConflicts: {conflict_count}\nHistory revisions: {history_revision_count}\nLast successful sync: {last_successful_sync}\nLast sync error: {last_sync_error}", - member_count = status.member_count, - peer_count = status.peers.len(), - file_count = status.file_count, - directory_count = status.directory_count, - deleted_count = status.deleted_count, - conflict_count = status.conflict_count, - history_revision_count = status.history_revision_count, - ); - for peer in &status.peers { - println!( - " {} — last seen {}, {}", - peer.device_id, - peer.last_seen, - route_description(&peer.endpoint) - ); - } - println!(); -} - -fn status_as_json(status: &FolderStatus) -> serde_json::Value { - serde_json::json!({ - "folder": status.folder.path, - "folder_id": status.folder.id, - "members": status.member_count, - "peers": status.peers.iter().map(|peer| serde_json::json!({ - "device_id": peer.device_id, - "last_seen": peer.last_seen.to_string(), - "route": route_description(&peer.endpoint), - })).collect::>(), - "files": status.file_count, - "directories": status.directory_count, - "tombstones": status.deleted_count, - "conflicts": status.conflict_count, - "history_revisions": status.history_revision_count, - "last_successful_sync": status.last_successful_sync.map(|time| time.to_string()), - "last_sync_error": status.last_sync_error, - }) -} - -fn route_description(endpoint: &iroh::EndpointAddr) -> &'static str { - if endpoint.ip_addrs().next().is_some() { - "direct address known" - } else if endpoint.relay_urls().next().is_some() { - "relay address known" - } else { - "route lookup pending" - } -} -- 2.51.2