use serde::{Deserialize, Serialize};
use super::harness::{Harness, SourceType};
use super::provider::Provider;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum RuleType {
#[serde(rename = "rule")]
Rule,
}
impl std::fmt::Display for RuleType {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
RuleType::Rule => write!(f, "rule"),
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct Rule {
pub id: String,
pub name: String,
#[serde(rename = "type")]
pub entity_type: RuleType,
pub provider: Provider,
pub harnesses: Vec<Harness>,
pub summary: String,
pub source_type: SourceType,
pub official_docs: Vec<String>,
pub security_notes: String,
pub last_verified: String,
pub path: String,
pub author: Option<String>,
}