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.
13#[must_use]
14pub fn detect_project_stack(
15    config: &Config,
16    repo_root: &std::path::Path,
17    logger: &Logger,
18    colors: Colors,
19) -> (Option<ProjectStack>, Option<ReviewGuidelines>) {
20    if !config.behavior.auto_detect_stack {
21        return (None, None);
22    }
23
24    match crate::language_detector::detect_stack(repo_root) {
25        Ok(stack) => {
26            logger.info(&format!(
27                "Detected stack: {}{}{}",
28                colors.cyan(),
29                stack.summary(),
30                colors.reset()
31            ));
32            let guidelines = ReviewGuidelines::for_stack(&stack);
33            (Some(stack), Some(guidelines))
34        }
35        Err(e) => {
36            logger.warn(&format!("Could not detect project stack: {e}"));
37            (None, None)
38        }
39    }
40}