140
140
if err != nil {
141
141
return err
142
142
}
143
+
143
144
kvType , err := getOptType (k , optDefs )
144
145
if err != nil {
145
146
return err // shouldn't happen b/c k,v was parsed from optsDef
@@ -409,17 +410,17 @@ func splitkv(opt string) (k, v string, ok bool) {
409
410
}
410
411
}
411
412
412
- func parseOpt (opt , value string , opts map [string ]cmds.Option ) (interface {}, error ) {
413
+ func parseOpt (opt , value string , opts map [string ]cmds.Option ) (string , interface {}, error ) {
413
414
optDef , ok := opts [opt ]
414
415
if ! ok {
415
- return nil , fmt .Errorf ("unknown option %q" , opt )
416
+ return "" , nil , fmt .Errorf ("unknown option %q" , opt )
416
417
}
417
418
418
419
v , err := optDef .Parse (value )
419
420
if err != nil {
420
- return nil , err
421
+ return "" , nil , err
421
422
}
422
- return v , nil
423
+ return optDef . Name (), v , nil
423
424
}
424
425
425
426
type kv struct {
@@ -433,7 +434,7 @@ func (st *parseState) parseShortOpts(optDefs map[string]cmds.Option) ([]kv, erro
433
434
434
435
if ok {
435
436
// split at = successful
436
- v , err := parseOpt (k , vStr , optDefs )
437
+ k , v , err := parseOpt (k , vStr , optDefs )
437
438
if err != nil {
438
439
return nil , err
439
440
}
@@ -453,7 +454,7 @@ func (st *parseState) parseShortOpts(optDefs map[string]cmds.Option) ([]kv, erro
453
454
case od .Type () == cmds .Bool :
454
455
// single char flags for bools
455
456
kvs = append (kvs , kv {
456
- Key : flag ,
457
+ Key : od . Name () ,
457
458
Value : true ,
458
459
})
459
460
j ++
@@ -462,23 +463,23 @@ func (st *parseState) parseShortOpts(optDefs map[string]cmds.Option) ([]kv, erro
462
463
// single char flag for non-bools (use the rest of the flag as value)
463
464
rest := k [j + 1 :]
464
465
465
- v , err := parseOpt (flag , rest , optDefs )
466
+ k , v , err := parseOpt (flag , rest , optDefs )
466
467
if err != nil {
467
468
return nil , err
468
469
}
469
470
470
- kvs = append (kvs , kv {Key : flag , Value : v })
471
+ kvs = append (kvs , kv {Key : k , Value : v })
471
472
break LOOP
472
473
473
474
case st .i < len (st .cmdline )- 1 :
474
475
// single char flag for non-bools (use the next word as value)
475
476
st .i ++
476
- v , err := parseOpt (flag , st .cmdline [st .i ], optDefs )
477
+ k , v , err := parseOpt (flag , st .cmdline [st .i ], optDefs )
477
478
if err != nil {
478
479
return nil , err
479
480
}
480
481
481
- kvs = append (kvs , kv {Key : flag , Value : v })
482
+ kvs = append (kvs , kv {Key : k , Value : v })
482
483
break LOOP
483
484
484
485
default :
@@ -507,7 +508,7 @@ func (st *parseState) parseLongOpt(optDefs map[string]cmds.Option) (string, inte
507
508
}
508
509
}
509
510
510
- optval , err := parseOpt (k , v , optDefs )
511
+ k , optval , err := parseOpt (k , v , optDefs )
511
512
return k , optval , err
512
513
}
513
514
0 commit comments