repopilot 0.9.0

Local-first CLI for repository audit, architecture risk detection, baseline tracking, and CI-friendly code review.
Documentation
use crate::cli::CompareOutputFormatArg;
use crate::commands::{ScanConfigOverrides, build_scan_config};
use repopilot::config::loader::{load_default_config, load_optional_config};
use repopilot::doctor::{build_doctor_report, render_doctor_report};
use repopilot::output::OutputFormat;
use repopilot::report::writer::write_report;
use std::path::PathBuf;

pub fn run(
    path: PathBuf,
    config: Option<PathBuf>,
    format: CompareOutputFormatArg,
    output: Option<PathBuf>,
    include_low_signal: bool,
    max_files: Option<usize>,
) -> Result<(), Box<dyn std::error::Error>> {
    let repo_config = match &config {
        Some(config_path) => load_optional_config(config_path)?,
        None => load_default_config()?,
    };

    let scan_config = build_scan_config(
        &repo_config,
        ScanConfigOverrides {
            include_low_signal,
            max_files,
            ..ScanConfigOverrides::default()
        },
    );

    let output_format: OutputFormat = format.into();

    let report = build_doctor_report(&path, config.as_deref(), &scan_config)?;
    let rendered = render_doctor_report(&report, output_format)?;

    write_report(&rendered, output.as_deref())?;

    Ok(())
}