1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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,
},
}
}