func ParseCliCommand()

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
}