use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Config {
pub initialized: bool,
pub version: String,
pub update_channel: String,
pub auto_update: bool,
pub clippy_rules: Vec<String>,
pub max_file_lines: usize,
pub max_function_lines: usize,
pub required_edition: String,
pub required_rust_version: String,
pub ban_underscore_bandaid: bool,
pub require_documentation: bool,
pub custom_rules: Vec<CustomRule>,
pub validation: ValidationConfig,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CustomRule {
pub name: String,
pub pattern: String,
pub message: String,
pub enabled: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ValidationConfig {
pub check_version_consistency: Option<bool>,
pub version_check_exclusions: Option<Vec<String>>,
pub enforce_keep_a_changelog: Option<bool>,
pub require_changelog_entry: Option<bool>,
pub check_changelog_on_tag: Option<bool>,
pub changelog_required_sections: Option<Vec<String>>,
}
impl Default for ValidationConfig {
fn default() -> Self {
Self {
check_version_consistency: Some(true),
version_check_exclusions: None,
enforce_keep_a_changelog: Some(true),
require_changelog_entry: Some(true),
check_changelog_on_tag: Some(true),
changelog_required_sections: Some(vec![
"Added".to_string(),
"Changed".to_string(),
"Fixed".to_string(),
]),
}
}
}
impl Default for Config {
fn default() -> Self {
Self {
initialized: false,
version: "1.3.0".to_string(),
update_channel: "stable".to_string(),
auto_update: true,
clippy_rules: vec![
"--warn=clippy::all".to_string(),
"--warn=clippy::pedantic".to_string(),
"--warn=clippy::nursery".to_string(),
"--warn=clippy::unwrap_used".to_string(),
"--warn=clippy::expect_used".to_string(),
],
max_file_lines: 300,
max_function_lines: 50,
required_edition: "2024".to_string(),
required_rust_version: "1.85.0".to_string(),
ban_underscore_bandaid: true,
require_documentation: true,
custom_rules: vec![],
validation: ValidationConfig::default(),
}
}
}