repopilot 0.20.0

Local-first CLI for reviewing Git changes, security boundaries, and blast radius before merge.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use crate::commands::{CliExit, EXIT_USAGE};
use repopilot::output::ai_context::AiFocusCategory;

pub const VALID_FOCUS_VALUES: &str = "security, arch, architecture, quality, framework, all";

pub fn parse_focus_category(
    focus: Option<&str>,
) -> Result<Option<AiFocusCategory>, Box<dyn std::error::Error>> {
    match focus {
        Some(value) => Ok(Some(value.parse::<AiFocusCategory>().map_err(|_| {
            CliExit {
                code: EXIT_USAGE,
                message: format!("Invalid focus '{value}'. Expected: {VALID_FOCUS_VALUES}"),
            }
        })?)),
        None => Ok(None),
    }
}