pub mod ci_scorer;
pub mod demo_scorer;
pub mod hygiene_scorer;
pub mod makefile_scorer;
pub mod pmat_scorer;
pub mod precommit_scorer;
pub mod readme_scorer;
pub use ci_scorer::CiScorer;
pub use demo_scorer::DemoScorer;
pub use hygiene_scorer::HygieneScorer;
pub use makefile_scorer::MakefileScorer;
pub use pmat_scorer::PmatScorer;
pub use precommit_scorer::PrecommitScorer;
pub use readme_scorer::ReadmeScorer;
use crate::services::repo_score::error::Result;
use crate::services::repo_score::models::*;
use async_trait::async_trait;
use std::path::Path;
#[async_trait]
pub trait Scorer: Send + Sync {
fn category_name(&self) -> &str;
fn max_score(&self) -> f64;
async fn score(&self, repo_path: &Path, config: &ScorerConfig) -> Result<CategoryScore>;
}
#[derive(Debug, Clone)]
pub struct ScorerConfig {
pub verbose: bool,
pub timeout_seconds: u64,
pub skip_slow_checks: bool,
pub deep: bool,
}
impl Default for ScorerConfig {
fn default() -> Self {
Self {
verbose: false,
timeout_seconds: 300,
skip_slow_checks: false,
deep: false,
}
}
}