Skip to main content

commit_wizard/engine/models/policy/
check.rs

1use crate::engine::models::{policy::enforcement::CommitEnforcementScope, runtime::ResolvedConfig};
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq)]
4pub enum CommitCheckEnforcement {
5    AllBranches,
6    ProtectedBranches,
7    None,
8}
9
10impl From<CommitEnforcementScope> for CommitCheckEnforcement {
11    fn from(value: CommitEnforcementScope) -> Self {
12        match value {
13            CommitEnforcementScope::AllBranches => Self::AllBranches,
14            CommitEnforcementScope::ProtectedBranches => Self::ProtectedBranches,
15            CommitEnforcementScope::None => Self::None,
16        }
17    }
18}
19
20#[derive(Debug, Clone)]
21pub struct CheckModel {
22    pub require_conventional: bool,
23    pub commits_enabled: bool,
24    pub enforcement: CommitCheckEnforcement,
25}
26
27impl Default for CheckModel {
28    fn default() -> Self {
29        Self {
30            require_conventional: true,
31            commits_enabled: true,
32            enforcement: CommitCheckEnforcement::ProtectedBranches,
33        }
34    }
35}
36
37impl CheckModel {
38    pub fn from_config(config: &ResolvedConfig) -> Self {
39        let base = &config.base;
40
41        Self {
42            require_conventional: base.check_require_conventional(),
43            commits_enabled: base.check_commits_enabled(),
44            enforcement: base.check_commits_enforce_on().into(),
45        }
46    }
47}