use std::path::Path;
use crate::check_config::CheckConfig;
use crate::violation::Violation;
use super::cargo_meta::CargoMetadata;
use super::{feature_boundary, module_layout};
pub struct ProjectContext<'a> {
pub rust_files: &'a [String],
pub workspace_root: &'a Path,
pub metadata: Option<&'a CargoMetadata>,
}
pub fn check_project(ctx: &ProjectContext<'_>, config: &CheckConfig) -> Vec<Violation> {
let mut violations = Vec::new();
module_layout::check_conflicting_module_root(ctx, config, &mut violations);
module_layout::check_flat_module_family(ctx, config, &mut violations);
feature_boundary::check_feature_boundary(ctx, config, &mut violations);
violations
}