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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
//! Help verbosity levels and global display options.
///
/// Help verbosity levels controlling output detail.
///
/// Controls the amount of information displayed in help text, from minimal
/// single-line output to comprehensive documentation. The default level is
/// Standard (Level 2), which provides a good balance of conciseness and completeness.
///
/// # Levels
///
/// - **Level 0 (Minimal)**: Command name and one-line description only
/// - Use case: Quick reference, command discovery
/// - Example: `.config - Display current configuration and sources`
///
/// - **Level 1 (Basic)**: Add parameters list with types
/// - Use case: Syntax lookup, remembering parameter names
/// - Shows: Command description + parameter list
///
/// - **Level 2 (Standard)**: Concise help with usage, parameters, examples (DEFAULT)
/// - Use case: Terminal use, getting started quickly
/// - Shows: USAGE, PARAMETERS with descriptions, EXAMPLES
/// - Inspired by unikit-style concise formatting
///
/// - **Level 3 (Detailed)**: Full metadata including validation rules, aliases, tags
/// - Use case: Comprehensive documentation, understanding constraints
/// - Shows: All command metadata, validation rules, version info
///
/// - **Level 4 (Comprehensive)**: Extensive explanations with rationale and use cases
/// - Use case: Learning, documentation generation, detailed references
/// - Shows: Extended format with rationale and explanations
/// - Inspired by runbox-style comprehensive formatting
///
/// # Environment Variable
///
/// The verbosity level can be controlled via the `UNILANG_HELP_VERBOSITY` environment
/// variable (values 0-4). Values above 4 are capped at Comprehensive.
///
/// # Examples
///
/// ```rust
/// use unilang_help::HelpVerbosity;
///
/// // Parse from integer
/// let level = HelpVerbosity::from_level( 2 );
/// assert_eq!( level, HelpVerbosity::Standard );
///
/// // Read from environment variable
/// let level = HelpVerbosity::from_env();
///
/// // Default is Standard (Level 2)
/// assert_eq!( HelpVerbosity::default(), HelpVerbosity::Standard );
/// ```
/// Global configuration for help output display.
///
/// This struct controls which metadata fields appear in help output
/// across all commands. Per-command settings (like `HelpCommandData::show_version`)
/// can override these defaults.
///
/// # Environment Variable Support
///
/// - `UNILANG_HELP_HIDE_VERSION=1` - Disables version display globally
///
/// # Examples
///
/// ```rust
/// use unilang_help::HelpDisplayOptions;
///
/// // Default: show everything
/// let options = HelpDisplayOptions::default();
/// assert!( options.show_version );
///
/// // Hide version globally
/// let options = HelpDisplayOptions::default().hide_version();
/// assert!( !options.show_version );
///
/// // Read from environment
/// let options = HelpDisplayOptions::default().with_env_overrides();
/// ```