ralph_workflow/app/
detection.rs1use crate::config::Config;
7use crate::guidelines::ReviewGuidelines;
8use crate::language_detector::ProjectStack;
9use crate::logger::Colors;
10use crate::logger::Logger;
11
12#[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}