commit-wizard 0.0.2

A lightweight CLI assistant for Conventional Commits, semantic versioning, and changelog automation.
Documentation
use crate::engine::models::{policy::enforcement::CommitEnforcementScope, runtime::ResolvedConfig};

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum CommitCheckEnforcement {
    AllBranches,
    ProtectedBranches,
    None,
}

impl From<CommitEnforcementScope> for CommitCheckEnforcement {
    fn from(value: CommitEnforcementScope) -> Self {
        match value {
            CommitEnforcementScope::AllBranches => Self::AllBranches,
            CommitEnforcementScope::ProtectedBranches => Self::ProtectedBranches,
            CommitEnforcementScope::None => Self::None,
        }
    }
}

#[derive(Debug, Clone)]
pub struct CheckModel {
    pub require_conventional: bool,
    pub commits_enabled: bool,
    pub enforcement: CommitCheckEnforcement,
}

impl Default for CheckModel {
    fn default() -> Self {
        Self {
            require_conventional: true,
            commits_enabled: true,
            enforcement: CommitCheckEnforcement::ProtectedBranches,
        }
    }
}

impl CheckModel {
    pub fn from_config(config: &ResolvedConfig) -> Self {
        let base = &config.base;

        Self {
            require_conventional: base.check_require_conventional(),
            commits_enabled: base.check_commits_enabled(),
            enforcement: base.check_commits_enforce_on().into(),
        }
    }
}