syncable_cli/handlers/
analyze.rs

1use 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        // Determine display mode
22        let mode = if detailed {
23            // Legacy flag for backward compatibility
24            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}