Skip to main content

ralph_workflow/app/
detection.rs

1//! Project stack detection and review guidelines generation.
2//!
3//! This module handles automatic detection of the project technology stack
4//! and generation of language-specific review guidelines.
5
6use crate::config::Config;
7use crate::guidelines::ReviewGuidelines;
8use crate::language_detector::ProjectStack;
9use crate::logger::Colors;
10use crate::logger::Logger;
11
12/// Detects project stack and generates review guidelines.
13pub fn detect_project_stack(
14    config: &Config,
15    repo_root: &std::path::Path,
16    logger: &Logger,
17    colors: Colors,
18) -> (Option<ProjectStack>, Option<ReviewGuidelines>) {
19    if !config.behavior.auto_detect_stack {
20        return (None, None);
21    }
22
23    match crate::language_detector::detect_stack(repo_root) {
24        Ok(stack) => {
25            logger.info(&format!(
26                "Detected stack: {}{}{}",
27                colors.cyan(),
28                stack.summary(),
29                colors.reset()
30            ));
31            let guidelines = ReviewGuidelines::for_stack(&stack);
32            (Some(stack), Some(guidelines))
33        }
34        Err(e) => {
35            logger.warn(&format!("Could not detect project stack: {e}"));
36            (None, None)
37        }
38    }
39}