@@ -112,14 +112,17 @@ public void ShowHelp()
112
112
app . Option ( "--rStrOpt <E>" , "restricted str option desc." , CommandOptionType . SingleValue , o => o . IsRequired ( ) . Accepts ( ) . Values ( "Foo" , "Bar" ) ) ;
113
113
app . Option < int > ( "--intOpt <E>" , "int option desc." , CommandOptionType . SingleValue ) ;
114
114
app . Option < SomeEnum > ( "--enumOpt <E>" , "enum option desc." , CommandOptionType . SingleValue ) ;
115
- app . Option < SomeEnum > ( "--rEnumOpt <E>" , "restricted enum option desc." , CommandOptionType . SingleValue , o => o . Accepts ( ) . Values ( "None" , "Normal" ) ) ;
115
+ app . Option < SomeEnum > ( "--enumOpt2 <E>" , "restricted enum option desc." , CommandOptionType . SingleValue , o => o . Accepts ( ) . Values ( "None" , "Normal" ) ) ;
116
+ app . Option < ( bool , SomeEnum ) > ( "--enumOpt3 <E>" , "nullable enum option desc." , CommandOptionType . SingleOrNoValue ) ;
117
+ app . Option < SomeEnum ? > ( "--enumOpt4 <E>" , "nullable enum option desc." , CommandOptionType . SingleOrNoValue ) ;
116
118
app . Argument ( "SomeStringArgument" , "string arg desc." ) ;
117
119
app . Argument ( "RestrictedStringArgument" , "restricted string arg desc." , a => a . IsRequired ( ) . Accepts ( ) . Values ( "Foo" , "Bar" ) ) ;
118
120
app . Argument < SomeEnum > ( "SomeEnumArgument" , "enum arg desc." ) ;
119
121
app . Argument < SomeEnum > ( "RestrictedEnumArgument" , "restricted enum arg desc." , a => a . Accepts ( ) . Values ( "None" , "Normal" ) ) ;
122
+ app . Argument < ( bool , SomeEnum ) > ( "SomeNullableEnumArgument" , "nullable enum arg desc." ) ;
120
123
var helpText = GetHelpText ( app ) ;
121
124
122
- Assert . Equal ( @"Usage: [options] <SomeStringArgument> <RestrictedStringArgument> <SomeEnumArgument> <RestrictedEnumArgument>
125
+ Assert . Equal ( @"Usage: [options] <SomeStringArgument> <RestrictedStringArgument> <SomeEnumArgument> <RestrictedEnumArgument> <SomeNullableEnumArgument>
123
126
124
127
Arguments:
125
128
SomeStringArgument string arg desc.
@@ -129,6 +132,8 @@ SomeEnumArgument enum arg desc.
129
132
Allowed values are: None, Normal, Extreme.
130
133
RestrictedEnumArgument restricted enum arg desc.
131
134
Allowed values are: None, Normal.
135
+ SomeNullableEnumArgument nullable enum arg desc.
136
+ Allowed values are: None, Normal, Extreme.
132
137
133
138
Options:
134
139
-?|-h|--help Show help information.
@@ -138,8 +143,12 @@ RestrictedEnumArgument restricted enum arg desc.
138
143
--intOpt <E> int option desc.
139
144
--enumOpt <E> enum option desc.
140
145
Allowed values are: None, Normal, Extreme.
141
- --rEnumOpt <E> restricted enum option desc.
146
+ --enumOpt2 <E> restricted enum option desc.
142
147
Allowed values are: None, Normal.
148
+ --enumOpt3[:<E>] nullable enum option desc.
149
+ Allowed values are: None, Normal, Extreme.
150
+ --enumOpt4[:<E>] nullable enum option desc.
151
+ Allowed values are: None, Normal, Extreme.
143
152
144
153
" ,
145
154
helpText ,
@@ -154,7 +163,7 @@ public void ShowHelpFromAttributes()
154
163
app . Conventions . UseDefaultConventions ( ) ;
155
164
var helpText = GetHelpText ( app ) ;
156
165
157
- Assert . Equal ( @"Usage: test [options] <SomeStringArgument> <RestrictedStringArgument> <SomeEnumArgument> <RestrictedEnumArgument>
166
+ Assert . Equal ( @"Usage: test [options] <SomeStringArgument> <RestrictedStringArgument> <SomeEnumArgument> <RestrictedEnumArgument> <SomeNullableEnumArgument>
158
167
159
168
Arguments:
160
169
SomeStringArgument string arg desc.
@@ -164,6 +173,8 @@ SomeEnumArgument enum arg desc.
164
173
Allowed values are: None, Normal, Extreme.
165
174
RestrictedEnumArgument restricted enum arg desc.
166
175
Allowed values are: None, Normal.
176
+ SomeNullableEnumArgument nullable enum arg desc.
177
+ Allowed values are: None, Normal, Extreme.
167
178
168
179
Options:
169
180
-strOpt|--str-opt <STR_OPT> str option desc.
@@ -172,8 +183,12 @@ RestrictedEnumArgument restricted enum arg desc.
172
183
-intOpt|--int-opt <INT_OPT> int option desc.
173
184
-enumOpt|--verbosity <VERBOSITY> enum option desc.
174
185
Allowed values are: None, Normal, Extreme.
175
- -rEnumOpt |--verb2 <VERB2> restricted enum option desc.
186
+ -enumOpt2 |--verb2 <VERB2> restricted enum option desc.
176
187
Allowed values are: None, Normal.
188
+ -enumOpt3|--verb3[:<VERB3>] nullable enum option desc.
189
+ Allowed values are: None, Normal, Extreme.
190
+ -enumOpt4|--verb4[:<VERB4>] nullable enum option desc.
191
+ Allowed values are: None, Normal, Extreme.
177
192
-?|-h|--help Show help information.
178
193
179
194
" ,
@@ -197,10 +212,16 @@ public class MyApp
197
212
[ Option ( ShortName = "enumOpt" , Description = "enum option desc." ) ]
198
213
public SomeEnum Verbosity { get ; set ; }
199
214
200
- [ Option ( ShortName = "rEnumOpt " , Description = "restricted enum option desc." ) ]
215
+ [ Option ( ShortName = "enumOpt2 " , Description = "restricted enum option desc." ) ]
201
216
[ AllowedValues ( "None" , "Normal" ) ]
202
217
public SomeEnum Verb2 { get ; set ; }
203
218
219
+ [ Option ( ShortName = "enumOpt3" , Description = "nullable enum option desc." ) ]
220
+ public ( bool HasValue , SomeEnum Value ) Verb3 { get ; set ; }
221
+
222
+ [ Option ( CommandOptionType . SingleOrNoValue , ShortName = "enumOpt4" , Description = "nullable enum option desc." ) ]
223
+ public SomeEnum ? Verb4 { get ; set ; }
224
+
204
225
[ Argument ( 0 , Description = "string arg desc." ) ]
205
226
public string SomeStringArgument { get ; set ; }
206
227
@@ -215,6 +236,9 @@ public class MyApp
215
236
[ Argument ( 3 , Description = "restricted enum arg desc." ) ]
216
237
[ AllowedValues ( "None" , "Normal" ) ]
217
238
public SomeEnum RestrictedEnumArgument { get ; set ; }
239
+
240
+ [ Argument ( 4 , Description = "nullable enum arg desc." ) ]
241
+ public ( bool HasValue , SomeEnum Value ) SomeNullableEnumArgument { get ; set ; }
218
242
}
219
243
220
244
[ Theory ]
0 commit comments