use crate::common;
#[derive(Debug, serde::Deserialize)]
pub struct Hooks(pub Vec<HookDefinition>);
#[derive(Debug, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
pub struct HookDefinition {
pub id: String,
pub name: String,
pub entry: String,
pub language: String,
pub files: Option<String>,
pub exclude: Option<String>,
pub types: Option<Vec<String>>,
pub types_or: Option<Vec<String>>,
pub exclude_types: Option<Vec<String>>,
#[serde(default)]
pub always_run: bool,
#[serde(default)]
pub fail_fast: bool,
#[serde(default)]
pub verbose: bool,
#[serde(default = "default_true")]
pub pass_filenames: bool,
#[serde(default)]
pub require_serial: bool,
#[serde(default)]
pub description: String,
#[serde(default = "default_language_version")]
pub language_version: String,
#[serde(default = "common::default_minimum_pre_commit_version")]
pub minimum_pre_commit_version: String,
#[serde(default)]
pub args: Vec<String>,
pub stages: Option<Vec<String>>,
}
const fn default_true() -> bool {
true
}
fn default_language_version() -> String {
"default".into()
}