opys-mojang-rules 0.1.21

Mojang-standard rule format (os / features / rule / ruleset). Pure Rust port of @opys/mojang-rules.
Documentation
use crate::os::{OsName, OsOptions, RuleError};
use crate::rule::{satisfies_rule, Rule, RuleAction};

pub type Ruleset = Vec<Rule>;

pub fn satisfies_ruleset(
    ruleset: &Ruleset,
    os: &OsOptions,
    feats: &[String],
) -> Result<bool, RuleError> {
    for rule in ruleset {
        if !satisfies_rule(rule, os, feats)? {
            return Ok(false);
        }
    }
    Ok(true)
}

pub fn empty_ruleset() -> Ruleset {
    Vec::new()
}

pub fn allow_os_ruleset(name: OsName) -> Ruleset {
    vec![Rule::Os {
        action: RuleAction::Allow,
        os: crate::os::OsConstraint {
            name: Some(name),
            ..Default::default()
        },
    }]
}