syncable_cli/analyzer/display/
mod.rs1mod box_drawer;
8mod color_adapter;
9mod detailed_view;
10mod helpers;
11mod json_view;
12mod matrix_view;
13mod summary_view;
14mod utils;
15
16pub use box_drawer::BoxDrawer;
18pub use color_adapter::{ColorAdapter, ColorScheme, get_color_adapter, init_color_adapter};
19pub use helpers::{format_project_category, get_category_emoji};
20pub use utils::{
21 format_list_smart, format_ports_smart, get_terminal_width, smart_truncate, strip_ansi_codes,
22 truncate_to_width, visual_width,
23};
24
25use crate::analyzer::MonorepoAnalysis;
26
27#[derive(Debug, Clone, Copy, PartialEq)]
29pub enum DisplayMode {
30 Matrix,
32 Detailed,
34 Summary,
36 Json,
38}
39
40pub fn display_analysis(analysis: &MonorepoAnalysis, mode: DisplayMode) {
42 match mode {
43 DisplayMode::Matrix => matrix_view::display_matrix_view(analysis),
44 DisplayMode::Detailed => detailed_view::display_detailed_view(analysis),
45 DisplayMode::Summary => summary_view::display_summary_view(analysis),
46 DisplayMode::Json => json_view::display_json_view(analysis),
47 }
48}
49
50pub fn display_analysis_to_string(analysis: &MonorepoAnalysis, mode: DisplayMode) -> String {
52 match mode {
53 DisplayMode::Matrix => matrix_view::display_matrix_view_to_string(analysis),
54 DisplayMode::Detailed => detailed_view::display_detailed_view_to_string(analysis),
55 DisplayMode::Summary => summary_view::display_summary_view_to_string(analysis),
56 DisplayMode::Json => json_view::display_json_view_to_string(analysis),
57 }
58}
59
60pub fn display_analysis_with_return(analysis: &MonorepoAnalysis, mode: DisplayMode) -> String {
62 let output = display_analysis_to_string(analysis, mode);
63 print!("{}", output);
64 output
65}
66
67#[cfg(test)]
68mod tests {
69 use super::*;
70
71 #[test]
72 fn test_display_modes() {
73 assert_eq!(DisplayMode::Matrix, DisplayMode::Matrix);
75 assert_ne!(DisplayMode::Matrix, DisplayMode::Detailed);
76 }
77}