romm_cli/commands/
print.rs1use crate::core::utils::truncate;
2use crate::types::{Platform, RomList};
3
4pub fn print_platforms_table(platforms: &[Platform]) {
6 if platforms.is_empty() {
7 println!("No platforms returned.");
8 return;
9 }
10
11 let id_w = platforms
12 .iter()
13 .map(|p| p.id.to_string().len())
14 .max()
15 .unwrap_or(2)
16 .max(2);
17 let slug_w = platforms
18 .iter()
19 .map(|p| p.slug.len())
20 .max()
21 .unwrap_or(4)
22 .max(4);
23 let name_w = platforms
24 .iter()
25 .map(|p| {
26 p.display_name
27 .as_ref()
28 .filter(|s| !s.is_empty())
29 .unwrap_or(&p.name)
30 .len()
31 })
32 .max()
33 .unwrap_or(4)
34 .clamp(4, 40); println!(
37 "{:>id_w$} {:<slug_w$} {:<name_w$} {:>6} {:>8}",
38 "ID",
39 "SLUG",
40 "NAME",
41 "ROMS",
42 "FIRMWARE",
43 id_w = id_w,
44 slug_w = slug_w,
45 name_w = name_w
46 );
47
48 for p in platforms {
49 let display_name = p
50 .display_name
51 .as_ref()
52 .filter(|s| !s.is_empty())
53 .unwrap_or(&p.name);
54 let name = truncate(display_name, name_w);
55 println!(
56 "{:>id_w$} {:<slug_w$} {:<name_w$} {:>6} {:>8}",
57 p.id,
58 p.slug,
59 name,
60 p.rom_count,
61 p.firmware.len(),
62 id_w = id_w,
63 slug_w = slug_w,
64 name_w = name_w
65 );
66 }
67}
68
69pub fn print_roms_table(results: &RomList) {
71 if results.items.is_empty() {
72 println!("No ROMs returned.");
73 return;
74 }
75
76 let id_w = results
77 .items
78 .iter()
79 .map(|r| r.id.to_string().len())
80 .max()
81 .unwrap_or(2)
82 .max(2);
83 let pid_w = results
84 .items
85 .iter()
86 .map(|r| r.platform_id.to_string().len())
87 .max()
88 .unwrap_or(2)
89 .max(2);
90 let name_w = results
91 .items
92 .iter()
93 .map(|r| r.name.len())
94 .max()
95 .unwrap_or(4)
96 .clamp(4, 60);
97
98 println!(
99 "{:>id_w$} {:>pid_w$} {:<name_w$}",
100 "ID",
101 "PLAT",
102 "NAME",
103 id_w = id_w,
104 pid_w = pid_w,
105 name_w = name_w
106 );
107
108 for r in &results.items {
109 let name = truncate(&r.name, name_w);
110 println!(
111 "{:>id_w$} {:>pid_w$} {:<name_w$}",
112 r.id,
113 r.platform_id,
114 name,
115 id_w = id_w,
116 pid_w = pid_w,
117 name_w = name_w
118 );
119 }
120}