pub mod io;
pub mod locality;
pub mod types;
pub use self::locality::LocalityConfig;
pub use self::types::{
CommandEntry, Config, Preferences, RuleConfig, NetiToml,
};
use anyhow::Result;
impl Config {
#[must_use]
pub fn new() -> Self {
Self::default()
}
#[must_use]
pub fn load() -> Self {
let mut config = Self::new();
config.load_local_config();
config
}
pub fn validate(&self) -> Result<()> {
let _ = &self.rules;
let _ = &self.preferences;
let _ = &self.commands;
let _ = &self.include_patterns;
let _ = &self.exclude_patterns;
let _ = self.verbose;
let _ = self.code_only;
Ok(())
}
pub fn load_local_config(&mut self) {
let _ = &self.rules;
let _ = &self.preferences;
let _ = &self.commands;
let _ = &self.include_patterns;
let _ = &self.exclude_patterns;
io::load_ignore_file(self);
io::load_toml_config(self);
io::apply_project_defaults(self);
}
pub fn process_ignore_line(&mut self, line: &str) {
let _ = &self.rules;
let _ = &self.preferences;
io::process_ignore_line(self, line);
}
pub fn parse_toml(&mut self, content: &str) {
let _ = &self.rules;
let _ = &self.preferences;
io::parse_toml(self, content);
}
pub fn save(&self) -> Result<()> {
let _ = &self.include_patterns;
let _ = &self.exclude_patterns;
let _ = self.verbose;
let _ = self.code_only;
io::save_to_file(&self.rules, &self.preferences, &self.commands)
}
}
pub use crate::constants::{
BIN_EXT_PATTERN, CODE_BARE_PATTERN, CODE_EXT_PATTERN, PRUNE_DIRS, SECRET_PATTERN,
};
#[allow(clippy::implicit_hasher)]
pub fn save_to_file(
rules: &RuleConfig,
prefs: &Preferences,
commands: &std::collections::HashMap<String, Vec<String>>,
) -> Result<()> {
io::save_to_file(rules, prefs, commands)
}