@@ -24,21 +24,25 @@ pub enum TaskArg {
2424 String {
2525 required : bool ,
2626 default : String ,
27+ short : Option < String > ,
2728 description : Option < String > ,
2829 } ,
2930 Boolean {
3031 required : bool ,
3132 default : bool ,
33+ short : Option < String > ,
3234 description : Option < String > ,
3335 } ,
3436 Int {
3537 required : bool ,
3638 default : i32 ,
39+ short : Option < String > ,
3740 description : Option < String > ,
3841 } ,
3942 UInt {
4043 required : bool ,
4144 default : u32 ,
45+ short : Option < String > ,
4246 description : Option < String > ,
4347 } ,
4448 Positional {
@@ -53,21 +57,25 @@ pub enum TaskArg {
5357 StringList {
5458 required : bool ,
5559 default : Vec < String > ,
60+ short : Option < String > ,
5661 description : Option < String > ,
5762 } ,
5863 BooleanList {
5964 required : bool ,
6065 default : Vec < bool > ,
66+ short : Option < String > ,
6167 description : Option < String > ,
6268 } ,
6369 IntList {
6470 required : bool ,
6571 default : Vec < i32 > ,
72+ short : Option < String > ,
6673 description : Option < String > ,
6774 } ,
6875 UIntList {
6976 required : bool ,
7077 default : Vec < u32 > ,
78+ short : Option < String > ,
7179 description : Option < String > ,
7280 } ,
7381}
@@ -176,16 +184,23 @@ pub fn register_globals(globals: &mut GlobalsBuilder) {
176184 fn string < ' v > (
177185 #[ starlark( require = named, default = false ) ] required : bool ,
178186 #[ starlark( require = named) ] default : Option < String > ,
187+ #[ starlark( require = named, default = NoneOr :: None ) ] short : NoneOr < String > ,
179188 #[ starlark( require = named, default = NoneOr :: None ) ] description : NoneOr < String > ,
180189 ) -> starlark:: Result < TaskArg > {
181190 if required && default. is_some ( ) {
182191 return Err ( starlark:: Error :: new_kind ( starlark:: ErrorKind :: Function (
183192 anyhow:: anyhow!( "`required` and `default` are both set." ) ,
184193 ) ) ) ;
185194 }
195+ if matches ! ( short, NoneOr :: Other ( ref s) if s. len( ) != 1 ) {
196+ return Err ( starlark:: Error :: new_kind ( starlark:: ErrorKind :: Function (
197+ anyhow:: anyhow!( "`short` must be a 1-character string." ) ,
198+ ) ) ) ;
199+ }
186200 Ok ( TaskArg :: String {
187201 required,
188202 default : default. unwrap_or_default ( ) ,
203+ short : short. into_option ( ) ,
189204 description : description. into_option ( ) ,
190205 } )
191206 }
@@ -203,16 +218,23 @@ pub fn register_globals(globals: &mut GlobalsBuilder) {
203218 fn string_list < ' v > (
204219 #[ starlark( require = named, default = false ) ] required : bool ,
205220 #[ starlark( require = named, default = NoneOr :: None ) ] default : NoneOr < UnpackList < String > > ,
221+ #[ starlark( require = named, default = NoneOr :: None ) ] short : NoneOr < String > ,
206222 #[ starlark( require = named, default = NoneOr :: None ) ] description : NoneOr < String > ,
207223 ) -> starlark:: Result < TaskArg > {
208224 if required && !default. is_none ( ) {
209225 return Err ( starlark:: Error :: new_kind ( starlark:: ErrorKind :: Function (
210226 anyhow:: anyhow!( "`required` and `default` are both set." ) ,
211227 ) ) ) ;
212228 }
229+ if matches ! ( short, NoneOr :: Other ( ref s) if s. len( ) != 1 ) {
230+ return Err ( starlark:: Error :: new_kind ( starlark:: ErrorKind :: Function (
231+ anyhow:: anyhow!( "`short` must be a 1-character string." ) ,
232+ ) ) ) ;
233+ }
213234 Ok ( TaskArg :: StringList {
214235 required,
215236 default : default. into_option ( ) . map ( |it| it. items ) . unwrap_or_default ( ) ,
237+ short : short. into_option ( ) ,
216238 description : description. into_option ( ) ,
217239 } )
218240 }
@@ -231,6 +253,7 @@ pub fn register_globals(globals: &mut GlobalsBuilder) {
231253 fn boolean < ' v > (
232254 #[ starlark( require = named, default = false ) ] required : bool ,
233255 #[ starlark( require = named ) ] default : Option < bool > ,
256+ #[ starlark( require = named, default = NoneOr :: None ) ] short : NoneOr < String > ,
234257 #[ starlark( require = named, default = NoneOr :: None ) ] description : NoneOr < String > ,
235258 _eval : & mut Evaluator < ' v , ' _ , ' _ > ,
236259 ) -> starlark:: Result < TaskArg > {
@@ -239,9 +262,15 @@ pub fn register_globals(globals: &mut GlobalsBuilder) {
239262 anyhow:: anyhow!( "`required` and `default` are both set." ) ,
240263 ) ) ) ;
241264 }
265+ if matches ! ( short, NoneOr :: Other ( ref s) if s. len( ) != 1 ) {
266+ return Err ( starlark:: Error :: new_kind ( starlark:: ErrorKind :: Function (
267+ anyhow:: anyhow!( "`short` must be a 1-character string." ) ,
268+ ) ) ) ;
269+ }
242270 Ok ( TaskArg :: Boolean {
243271 required,
244272 default : default. unwrap_or_default ( ) ,
273+ short : short. into_option ( ) ,
245274 description : description. into_option ( ) ,
246275 } )
247276 }
@@ -259,16 +288,23 @@ pub fn register_globals(globals: &mut GlobalsBuilder) {
259288 fn boolean_list < ' v > (
260289 #[ starlark( require = named, default = false ) ] required : bool ,
261290 #[ starlark( require = named, default = NoneOr :: None ) ] default : NoneOr < UnpackList < bool > > ,
291+ #[ starlark( require = named, default = NoneOr :: None ) ] short : NoneOr < String > ,
262292 #[ starlark( require = named, default = NoneOr :: None ) ] description : NoneOr < String > ,
263293 ) -> starlark:: Result < TaskArg > {
264294 if required && !default. is_none ( ) {
265295 return Err ( starlark:: Error :: new_kind ( starlark:: ErrorKind :: Function (
266296 anyhow:: anyhow!( "`required` and `default` are both set." ) ,
267297 ) ) ) ;
268298 }
299+ if matches ! ( short, NoneOr :: Other ( ref s) if s. len( ) != 1 ) {
300+ return Err ( starlark:: Error :: new_kind ( starlark:: ErrorKind :: Function (
301+ anyhow:: anyhow!( "`short` must be a 1-character string." ) ,
302+ ) ) ) ;
303+ }
269304 Ok ( TaskArg :: BooleanList {
270305 required,
271306 default : default. into_option ( ) . map ( |it| it. items ) . unwrap_or_default ( ) ,
307+ short : short. into_option ( ) ,
272308 description : description. into_option ( ) ,
273309 } )
274310 }
@@ -287,16 +323,23 @@ pub fn register_globals(globals: &mut GlobalsBuilder) {
287323 fn int < ' v > (
288324 #[ starlark( require = named, default = false ) ] required : bool ,
289325 #[ starlark( require = named) ] default : Option < i32 > ,
326+ #[ starlark( require = named, default = NoneOr :: None ) ] short : NoneOr < String > ,
290327 #[ starlark( require = named, default = NoneOr :: None ) ] description : NoneOr < String > ,
291328 ) -> starlark:: Result < TaskArg > {
292329 if required && default. is_some ( ) {
293330 return Err ( starlark:: Error :: new_kind ( starlark:: ErrorKind :: Function (
294331 anyhow:: anyhow!( "`required` and `default` are both set." ) ,
295332 ) ) ) ;
296333 }
334+ if matches ! ( short, NoneOr :: Other ( ref s) if s. len( ) != 1 ) {
335+ return Err ( starlark:: Error :: new_kind ( starlark:: ErrorKind :: Function (
336+ anyhow:: anyhow!( "`short` must be a 1-character string." ) ,
337+ ) ) ) ;
338+ }
297339 Ok ( TaskArg :: Int {
298340 required,
299341 default : default. unwrap_or_default ( ) ,
342+ short : short. into_option ( ) ,
300343 description : description. into_option ( ) ,
301344 } )
302345 }
@@ -314,16 +357,23 @@ pub fn register_globals(globals: &mut GlobalsBuilder) {
314357 fn int_list < ' v > (
315358 #[ starlark( require = named, default = false ) ] required : bool ,
316359 #[ starlark( require = named, default = NoneOr :: None ) ] default : NoneOr < UnpackList < i32 > > ,
360+ #[ starlark( require = named, default = NoneOr :: None ) ] short : NoneOr < String > ,
317361 #[ starlark( require = named, default = NoneOr :: None ) ] description : NoneOr < String > ,
318362 ) -> starlark:: Result < TaskArg > {
319363 if required && !default. is_none ( ) {
320364 return Err ( starlark:: Error :: new_kind ( starlark:: ErrorKind :: Function (
321365 anyhow:: anyhow!( "`required` and `default` are both set." ) ,
322366 ) ) ) ;
323367 }
368+ if matches ! ( short, NoneOr :: Other ( ref s) if s. len( ) != 1 ) {
369+ return Err ( starlark:: Error :: new_kind ( starlark:: ErrorKind :: Function (
370+ anyhow:: anyhow!( "`short` must be a 1-character string." ) ,
371+ ) ) ) ;
372+ }
324373 Ok ( TaskArg :: IntList {
325374 required,
326375 default : default. into_option ( ) . map ( |it| it. items ) . unwrap_or_default ( ) ,
376+ short : short. into_option ( ) ,
327377 description : description. into_option ( ) ,
328378 } )
329379 }
@@ -341,16 +391,23 @@ pub fn register_globals(globals: &mut GlobalsBuilder) {
341391 fn uint < ' v > (
342392 #[ starlark( require = named, default = false ) ] required : bool ,
343393 #[ starlark( require = named) ] default : Option < u32 > ,
394+ #[ starlark( require = named, default = NoneOr :: None ) ] short : NoneOr < String > ,
344395 #[ starlark( require = named, default = NoneOr :: None ) ] description : NoneOr < String > ,
345396 ) -> starlark:: Result < TaskArg > {
346397 if required && default. is_some ( ) {
347398 return Err ( starlark:: Error :: new_kind ( starlark:: ErrorKind :: Function (
348399 anyhow:: anyhow!( "`required` and `default` are both set." ) ,
349400 ) ) ) ;
350401 }
402+ if matches ! ( short, NoneOr :: Other ( ref s) if s. len( ) != 1 ) {
403+ return Err ( starlark:: Error :: new_kind ( starlark:: ErrorKind :: Function (
404+ anyhow:: anyhow!( "`short` must be a 1-character string." ) ,
405+ ) ) ) ;
406+ }
351407 Ok ( TaskArg :: UInt {
352408 required,
353409 default : default. unwrap_or_default ( ) ,
410+ short : short. into_option ( ) ,
354411 description : description. into_option ( ) ,
355412 } )
356413 }
@@ -368,16 +425,23 @@ pub fn register_globals(globals: &mut GlobalsBuilder) {
368425 fn uint_list < ' v > (
369426 #[ starlark( require = named, default = false ) ] required : bool ,
370427 #[ starlark( require = named, default = NoneOr :: None ) ] default : NoneOr < UnpackList < u32 > > ,
428+ #[ starlark( require = named, default = NoneOr :: None ) ] short : NoneOr < String > ,
371429 #[ starlark( require = named, default = NoneOr :: None ) ] description : NoneOr < String > ,
372430 ) -> starlark:: Result < TaskArg > {
373431 if required && !default. is_none ( ) {
374432 return Err ( starlark:: Error :: new_kind ( starlark:: ErrorKind :: Function (
375433 anyhow:: anyhow!( "`required` and `default` are both set." ) ,
376434 ) ) ) ;
377435 }
436+ if matches ! ( short, NoneOr :: Other ( ref s) if s. len( ) != 1 ) {
437+ return Err ( starlark:: Error :: new_kind ( starlark:: ErrorKind :: Function (
438+ anyhow:: anyhow!( "`short` must be a 1-character string." ) ,
439+ ) ) ) ;
440+ }
378441 Ok ( TaskArg :: UIntList {
379442 required,
380443 default : default. into_option ( ) . map ( |it| it. items ) . unwrap_or_default ( ) ,
444+ short : short. into_option ( ) ,
381445 description : description. into_option ( ) ,
382446 } )
383447 }
0 commit comments