Skip to content

Commit

Permalink
just parse recognizable flag
Browse files Browse the repository at this point in the history
  • Loading branch information
yangxikun committed Jun 22, 2018
1 parent 0cd2584 commit 303159d
Showing 1 changed file with 9 additions and 11 deletions.
20 changes: 9 additions & 11 deletions flag.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,35 +85,33 @@ func (f *FlagLoader) Load(s interface{}) error {
args = f.Args
}

// support unknown flag
var newArgs []string
// just parse recognizable flag
var recognizableArgs []string
type BoolFlag interface {
IsBoolFlag() bool
}
for i := 0; i < len(args); i++ {
if strings.HasPrefix(args[i], "-") {
flagName := strings.TrimLeft(args[i], "-")
if flagName == "help" || flagName == "h" {
newArgs = append(newArgs, args[i])
recognizableArgs = append(recognizableArgs, args[i])
continue
}
cmdlineFlag := f.flagSet.Lookup(flagName)
if cmdlineFlag != nil {
newArgs = append(newArgs, args[i])
if bf, ok := cmdlineFlag.Value.(BoolFlag); ok && bf.IsBoolFlag() {
recognizableFlag := f.flagSet.Lookup(flagName)
if recognizableFlag != nil {
recognizableArgs = append(recognizableArgs, args[i])
if bf, ok := recognizableFlag.Value.(BoolFlag); ok && bf.IsBoolFlag() {
continue
}
i++
if i < len(args) {
newArgs = append(newArgs, args[i])
recognizableArgs = append(recognizableArgs, args[i])
}
}
}
}

fmt.Println(newArgs)

return flagSet.Parse(newArgs)
return flagSet.Parse(recognizableArgs)
}

func filterArgs(args []string) []string {
Expand Down

0 comments on commit 303159d

Please sign in to comment.