repopilot 0.11.0

Local-first CLI for repository audit, architecture risk detection, baseline tracking, and CI-friendly code review.
Documentation
use crate::frameworks::types::DetectedFramework;
use std::path::Path;

pub(super) fn detect_go_frameworks(root: &Path) -> Vec<DetectedFramework> {
    let content = match std::fs::read_to_string(root.join("go.mod")) {
        Ok(c) => c,
        Err(_) => return vec![],
    };

    let mut frameworks = Vec::new();

    for line in content.lines() {
        let trimmed = line.trim();
        if trimmed.starts_with("//") {
            continue;
        }
        let entry = trimmed.trim_start_matches("require ").trim();
        let version = entry
            .split_whitespace()
            .nth(1)
            .map(|v| v.trim_start_matches('v').to_string())
            .filter(|v| !v.is_empty());

        if trimmed.contains("gin-gonic/gin") {
            frameworks.push(DetectedFramework::Gin { version });
        } else if trimmed.contains("labstack/echo") {
            frameworks.push(DetectedFramework::Echo { version });
        } else if trimmed.contains("gofiber/fiber") {
            frameworks.push(DetectedFramework::Fiber { version });
        }
    }

    frameworks
}