hostcraft_cli/display/
mod.rs1mod style;
2
3use anstream::eprintln;
4use anstream::println;
5use hostcraft_core::{HostEntry, HostStatus};
6use style::*;
7
8pub fn print_entries(entries: &[HostEntry]) {
11 if entries.is_empty() {
12 println!("{DIM_STYLE}No entries found.{DIM_STYLE:#}");
13 return;
14 }
15
16 for entry in entries {
17 let (status_style, symbol) = match entry.status {
18 HostStatus::Active => (ACTIVE_STYLE, "●"),
19 HostStatus::Inactive => (INACTIVE_STYLE, "○"),
20 };
21
22 println!(
23 " {IP_STYLE}{ip:<20}{IP_STYLE:#} {NAME_STYLE}{name:<30}{NAME_STYLE:#} {status_style}{symbol} {status}{status_style:#}",
24 ip = entry.ip,
25 name = entry.name,
26 status = entry.status,
27 );
28 }
29}
30
31pub fn print_success(message: &str) {
32 println!("{SUCCESS_STYLE}✓{SUCCESS_STYLE:#} {message}");
33}
34
35pub fn print_error(message: &str) {
36 eprintln!("{ERROR_STYLE}✗ Error:{ERROR_STYLE:#} {message}");
37}
38
39pub fn print_update_notice(latest: &str) {
40 println!(
41 "\n{NOTICE_STYLE}↑ Update available:{NOTICE_STYLE:#} {DIM_STYLE}v{current}{DIM_STYLE:#} → {NOTICE_STYLE}v{latest}{NOTICE_STYLE:#}",
42 current = env!("CARGO_PKG_VERSION"),
43 );
44 println!(" {DIM_STYLE}Run `hostcraft update` to install.{DIM_STYLE:#}");
45}
46
47pub fn print_up_to_date() {
48 println!(
49 "{SUCCESS_STYLE}✓{SUCCESS_STYLE:#} hostcraft is up to date {DIM_STYLE}(v{}){DIM_STYLE:#}",
50 env!("CARGO_PKG_VERSION")
51 );
52}
53
54pub fn print_updating(latest: &str) {
55 println!(
56 "{NOTICE_STYLE}↑{NOTICE_STYLE:#} Updating {DIM_STYLE}v{current}{DIM_STYLE:#} → {NOTICE_STYLE}v{latest}{NOTICE_STYLE:#} ...",
57 current = env!("CARGO_PKG_VERSION"),
58 );
59}