syncable_cli/handlers/
analyze.rs1use crate::{
2 analyzer::{analyze_monorepo},
3 analyzer::display::{display_analysis_with_return, DisplayMode},
4 cli::DisplayFormat,
5};
6
7pub fn handle_analyze(
8 path: std::path::PathBuf,
9 json: bool,
10 detailed: bool,
11 display: Option<DisplayFormat>,
12 _only: Option<Vec<String>>,
13) -> crate::Result<String> {
14 println!("🔍 Analyzing project: {}", path.display());
15
16 let monorepo_analysis = analyze_monorepo(&path)?;
17
18 let output = if json {
19 display_analysis_with_return(&monorepo_analysis, DisplayMode::Json)
20 } else {
21 let mode = if detailed {
23 DisplayMode::Detailed
25 } else {
26 match display {
27 Some(DisplayFormat::Matrix) | None => DisplayMode::Matrix,
28 Some(DisplayFormat::Detailed) => DisplayMode::Detailed,
29 Some(DisplayFormat::Summary) => DisplayMode::Summary,
30 }
31 };
32
33 display_analysis_with_return(&monorepo_analysis, mode)
34 };
35
36 Ok(output)
37}