use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct Config {
#[serde(default)]
pub rules: HashMap<String, RuleConfig>,
#[serde(default)]
pub default_enabled: bool,
#[serde(default)]
pub custom_rules: Vec<String>,
#[serde(default = "default_gitignore")]
pub gitignore: bool,
#[serde(default)]
pub front_matter: Option<String>,
#[serde(default)]
pub no_inline_config: bool,
}
fn default_gitignore() -> bool {
true
}
impl Default for Config {
fn default() -> Self {
Self {
rules: HashMap::new(),
default_enabled: false,
custom_rules: Vec::new(),
gitignore: default_gitignore(),
front_matter: None,
no_inline_config: false,
}
}
}
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(untagged)]
pub enum RuleConfig {
Enabled(bool),
Config(HashMap<String, toml::Value>),
}
impl Config {
pub fn config(&self) -> &HashMap<String, RuleConfig> {
&self.rules
}
}