package cli func normalizeCommandArgs(args []string, stringFlags map[string]bool) []string { var flags []string var positionals []string for index := 0; index < len(args); index++ { arg := args[index] name, ok := flagName(arg) if !ok { positionals = append(positionals, arg) continue } flags = append(flags, arg) for i := 0; i < len(name); i++ { if name[i] == '=' { name = name[:i] break } } if stringFlags[name] && !hasInlineValue(arg) && index+1 < len(args) { index++ flags = append(flags, args[index]) } } return append(flags, positionals...)} func flagName(arg string) (string, bool) { if len(arg) >= 3 && arg[:2] == "--" { return arg[2:], true } if len(arg) >= 2 && arg[0] == '-' && arg[1] != '-' { return arg[1:], true } return "", false} func hasInlineValue(arg string) bool { for i := 0; i < len(arg); i++ { if arg[i] == '=' { return true } } return false}
package cli
func normalizeCommandArgs(args []string, stringFlags map[string]bool) []string {
var flags []string
var positionals []string
for index := 0; index < len(args); index++ {
arg := args[index]
name, ok := flagName(arg)
if !ok {
positionals = append(positionals, arg)
continue
}
flags = append(flags, arg)
for i := 0; i < len(name); i++ {
if name[i] == '=' {
name = name[:i]
break
}
}
if stringFlags[name] && !hasInlineValue(arg) && index+1 < len(args) {
index++
flags = append(flags, args[index])
}
}
return append(flags, positionals...)
}
func flagName(arg string) (string, bool) {
if len(arg) >= 3 && arg[:2] == "--" {
return arg[2:], true
}
if len(arg) >= 2 && arg[0] == '-' && arg[1] != '-' {
return arg[1:], true
}
return "", false
}
func hasInlineValue(arg string) bool {
for i := 0; i < len(arg); i++ {
if arg[i] == '=' {
return true
}
}
return false
}