mod box_drawer;
mod color_adapter;
mod detailed_view;
mod helpers;
mod json_view;
mod matrix_view;
mod summary_view;
mod utils;
pub use box_drawer::BoxDrawer;
pub use color_adapter::{ColorAdapter, ColorScheme, get_color_adapter, init_color_adapter};
pub use helpers::{format_project_category, get_category_emoji};
pub use utils::{
format_list_smart, format_ports_smart, get_terminal_width, smart_truncate, strip_ansi_codes,
truncate_to_width, visual_width,
};
use crate::analyzer::MonorepoAnalysis;
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum DisplayMode {
Matrix,
Detailed,
Summary,
Json,
}
pub fn display_analysis(analysis: &MonorepoAnalysis, mode: DisplayMode) {
match mode {
DisplayMode::Matrix => matrix_view::display_matrix_view(analysis),
DisplayMode::Detailed => detailed_view::display_detailed_view(analysis),
DisplayMode::Summary => summary_view::display_summary_view(analysis),
DisplayMode::Json => json_view::display_json_view(analysis),
}
}
pub fn display_analysis_to_string(analysis: &MonorepoAnalysis, mode: DisplayMode) -> String {
match mode {
DisplayMode::Matrix => matrix_view::display_matrix_view_to_string(analysis),
DisplayMode::Detailed => detailed_view::display_detailed_view_to_string(analysis),
DisplayMode::Summary => summary_view::display_summary_view_to_string(analysis),
DisplayMode::Json => json_view::display_json_view_to_string(analysis),
}
}
pub fn display_analysis_with_return(analysis: &MonorepoAnalysis, mode: DisplayMode) -> String {
let output = display_analysis_to_string(analysis, mode);
print!("{}", output);
output
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_display_modes() {
assert_eq!(DisplayMode::Matrix, DisplayMode::Matrix);
assert_ne!(DisplayMode::Matrix, DisplayMode::Detailed);
}
}