guardy 0.2.4

Fast, secure git hooks in Rust with secret scanning and protected file synchronization
Documentation
use crate::{cli::commands::config::ConfigArgs, config_build};

config_build! {
    ConfigConfig<crate::cli::commands::config::ConfigArgs> {
        // Output format for config display
        format: String => {
            cli: |args: &ConfigArgs| {
                match &args.command {
                    crate::cli::commands::config::ConfigCommand::Show { format } => Some(format.clone()),
                }
            },
            env: "GUARDY_CONFIG_FORMAT",
            default: "yaml".into(),
        },

        // Show default values in output
        show_defaults: bool => {
            env: "GUARDY_CONFIG_SHOW_DEFAULTS",
            default: false,
        },

        // Auto-validate configuration
        auto_validate: bool => {
            env: "GUARDY_CONFIG_AUTO_VALIDATE",
            default: true,
        },

        // Show source of each configuration value (cli, env, file, default)
        show_source: bool => {
            env: "GUARDY_CONFIG_SHOW_SOURCE",
            default: false,
        },

        // Validate strict mode (fail on warnings)
        validate_strict: bool => {
            env: "GUARDY_CONFIG_VALIDATE_STRICT",
            default: false,
        },

        // Create config if it doesn't exist
        create_if_missing: bool => {
            env: "GUARDY_CONFIG_CREATE_IF_MISSING",
            default: false,
        },

        // Config file path override
        path: Option<String> => {
            default: None,
        },
    }
}