pub(crate) mod agent_brief;
pub(crate) mod agent_review_summary;
pub(crate) mod agent_status;
pub(crate) mod agent_workflow;
mod check;
mod context;
mod explain;
mod selector;
pub use crate::output::format::OutputFormat;
pub use check::{check_workspace, check_workspace_repo, repo_seam_inventory_input};
pub(crate) use check::{check_workspace_repo_with_config, check_workspace_with_config};
pub(crate) use context::collect_context_with_config;
pub use context::{collect_context, collect_context_with_input};
pub(crate) use explain::explain_finding_with_config;
pub use explain::{explain_finding, explain_finding_with_input};
use crate::analysis::AnalysisMode;
use crate::config::RiprConfig;
use crate::domain::{Finding, Summary};
use crate::output;
use std::path::PathBuf;
pub(crate) const CHECK_OUTPUT_SCHEMA_VERSION: &str = "0.1";
#[derive(Clone, Debug)]
pub struct CheckInput {
pub root: PathBuf,
pub base: Option<String>,
pub diff_file: Option<PathBuf>,
pub mode: Mode,
pub format: OutputFormat,
pub include_unchanged_tests: bool,
}
impl Default for CheckInput {
fn default() -> Self {
Self {
root: PathBuf::from("."),
base: Some("origin/main".to_string()),
diff_file: None,
mode: Mode::Draft,
format: OutputFormat::Human,
include_unchanged_tests: true,
}
}
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum Mode {
Instant,
Draft,
Fast,
Deep,
Ready,
}
impl Mode {
pub fn as_str(&self) -> &'static str {
match self {
Mode::Instant => "instant",
Mode::Draft => "draft",
Mode::Fast => "fast",
Mode::Deep => "deep",
Mode::Ready => "ready",
}
}
pub fn analysis_mode(&self) -> AnalysisMode {
match self {
Mode::Instant => AnalysisMode::Instant,
Mode::Draft => AnalysisMode::Draft,
Mode::Fast => AnalysisMode::Fast,
Mode::Deep => AnalysisMode::Deep,
Mode::Ready => AnalysisMode::Ready,
}
}
}
#[derive(Clone, Debug)]
pub struct CheckOutput {
pub schema_version: String,
pub tool: String,
pub mode: Mode,
pub root: PathBuf,
pub base: Option<String>,
pub summary: Summary,
pub findings: Vec<Finding>,
}
pub fn render_check(output: &CheckOutput, format: &OutputFormat) -> Result<String, String> {
render_check_with_config(output, format, &RiprConfig::default())
}
pub(crate) fn render_check_with_config(
output: &CheckOutput,
format: &OutputFormat,
config: &RiprConfig,
) -> Result<String, String> {
output::render::render_check_with_config(output, format, config)
}
#[cfg(test)]
mod tests;