repopilot 0.11.0

Local-first CLI for repository audit, architecture risk detection, baseline tracking, and CI-friendly code review.
Documentation
use crate::config::defaults::{
    DEFAULT_COMPLEXITY_HIGH_THRESHOLD, DEFAULT_COMPLEXITY_MEDIUM_THRESHOLD,
    DEFAULT_HUGE_FILE_LINES, DEFAULT_IGNORED_PATHS, DEFAULT_INSTABILITY_HUB_MIN_FAN_IN,
    DEFAULT_INSTABILITY_HUB_MIN_INSTABILITY_PCT, DEFAULT_LONG_FUNCTION_LINES,
    DEFAULT_MAX_DIRECTORY_DEPTH, DEFAULT_MAX_DIRECTORY_MODULES, DEFAULT_MAX_FAN_OUT,
    DEFAULT_MAX_FILE_BYTES, DEFAULT_MAX_FILE_LINES,
};

pub fn default_config_toml() -> String {
    let ignored_paths = DEFAULT_IGNORED_PATHS
        .iter()
        .map(|path| format!("  \"{path}\""))
        .collect::<Vec<_>>()
        .join(",\n");

    format!(
        r#"# RepoPilot configuration file
# Generated by `repopilot init`

[scan]
ignore = [
{ignored_paths}
]
max_file_bytes = {DEFAULT_MAX_FILE_BYTES}

[architecture]
max_file_lines = {DEFAULT_MAX_FILE_LINES}
huge_file_lines = {DEFAULT_HUGE_FILE_LINES}
max_directory_modules = {DEFAULT_MAX_DIRECTORY_MODULES}
max_directory_depth = {DEFAULT_MAX_DIRECTORY_DEPTH}
max_function_lines = {DEFAULT_LONG_FUNCTION_LINES}
max_fan_out = {DEFAULT_MAX_FAN_OUT}
instability_hub_min_fan_in = {DEFAULT_INSTABILITY_HUB_MIN_FAN_IN}
instability_hub_min_instability_pct = {DEFAULT_INSTABILITY_HUB_MIN_INSTABILITY_PCT}

[code_quality]
complexity_medium_threshold = {DEFAULT_COMPLEXITY_MEDIUM_THRESHOLD}
complexity_high_threshold = {DEFAULT_COMPLEXITY_HIGH_THRESHOLD}

[testing]
detect_missing_tests = true

[security]
detect_secret_like_names = true

[output]
default_format = "console"
"#
    )
}