Skip to main content

vfa_tui/models/
rule.rs

1use serde::{Deserialize, Serialize};
2
3use super::harness::{Harness, SourceType};
4use super::provider::Provider;
5
6/// The type discriminator for rule entries.
7#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
8pub enum RuleType {
9    #[serde(rename = "rule")]
10    Rule,
11}
12
13impl std::fmt::Display for RuleType {
14    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
15        match self {
16            RuleType::Rule => write!(f, "rule"),
17        }
18    }
19}
20
21/// A catalog rule entry.
22#[derive(Debug, Clone, Serialize, Deserialize)]
23#[serde(deny_unknown_fields)]
24pub struct Rule {
25    pub id: String,
26    pub name: String,
27    #[serde(rename = "type")]
28    pub entity_type: RuleType,
29    pub provider: Provider,
30    pub harnesses: Vec<Harness>,
31    pub summary: String,
32    pub source_type: SourceType,
33    pub official_docs: Vec<String>,
34    pub security_notes: String,
35    pub last_verified: String,
36    pub path: String,
37    pub author: Option<String>,
38}