commands/cli: Made parser handle variadic arguments
Matt Bell committed
Nov 2, 2014 at 21:46 UTC
2c8fc8564c193d70944f9119d19edf1605340275
1 file changed
+8
-8
commands/cli/parse.go
+8
-8
@@ -108,19 +108,19 @@ func parseOptions(input []string) (map[string]interface{}, []string, error) {
108
// Note that the argument handling here is dumb, it does not do any error-checking.
109
// (Arguments are further processed when the request is passed to the command to run)
110
func parseArgs(stringArgs []string, cmd *cmds.Command) ([]interface{}, error) {
111
- args := make([]interface{}, len(cmd.Arguments))
111
+ var argDef cmds.Argument
112
+ args := make([]interface{}, len(stringArgs))
113
113
- for i, arg := range cmd.Arguments {
114
- // TODO: handle variadic args
115
- if i >= len(stringArgs) {
116
- break
114
+ for i, arg := range stringArgs {
115
+ if i < len(cmd.Arguments) {
116
+ argDef = cmd.Arguments[i]
117
}
118
119
- if arg.Type == cmds.ArgString {
120
- args[i] = stringArgs[i]
119
+ if argDef.Type == cmds.ArgString {
120
+ args[i] = arg
121
122
} else {
123
- in, err := os.Open(stringArgs[i])
123
+ in, err := os.Open(arg)
124
if err != nil {
125
return nil, err
126
}