in src/ssmclicommands/inputhandler.go [32:86]
func ParseCliCommand(args []string) (err error, options []string, command string, subcommand string, parameters map[string][]string) {
argCount := len(args)
pos := 1
// Options
options = make([]string, 0)
for _, val := range args[pos:] {
if !utils.IsFlag(val) {
break
}
options = append(options, utils.GetFlag(val))
pos++
}
// Command
if pos >= argCount {
err = errors.New("command is required")
return
}
command = strings.ToLower(args[pos])
pos++
//subcommand
if pos >= argCount {
return
}
subcommand = strings.ToLower(args[pos])
pos++
// Parameters
if pos >= argCount {
return
}
parameters = make(map[string][]string)
var parameterName string
for _, val := range args[2:] {
if utils.IsFlag(val) {
parameterName = utils.GetFlag(val)
if parameterName == "" {
// aws cli doesn't valid this
err = fmt.Errorf("input contains parameter with no name")
return
}
if _, exists := parameters[parameterName]; exists {
// aws cli doesn't valid this
err = fmt.Errorf("duplicate parameter %v", parameterName)
return
}
parameters[parameterName] = make([]string, 0)
} else {
parameters[parameterName] = append(parameters[parameterName], val)
}
}
return
}