Allow for flags being passed in after arguments

This commit is contained in:
Damien Le Berrigaud
2013-09-18 10:24:20 -06:00
parent e3ea5e29b0
commit 5d511c7a8b
2 changed files with 47 additions and 8 deletions
+25 -8
View File
@@ -1,18 +1,19 @@
package cli
import (
"io/ioutil"
"os"
"fmt"
"io/ioutil"
"strings"
)
type Command struct {
Name string
ShortName string
Usage string
Description string
Action func(context *Context)
Flags []Flag
Name string
ShortName string
Usage string
Description string
Action func (context *Context)
Flags []Flag
}
func (c Command) Run(ctx *Context) {
@@ -24,7 +25,23 @@ func (c Command) Run(ctx *Context) {
set := flagSet(c.Name, c.Flags)
set.SetOutput(ioutil.Discard)
err := set.Parse(ctx.Args()[1:])
firstFlagIndex := -1
for index, arg := range ctx.Args() {
if strings.HasPrefix(arg, "-") {
firstFlagIndex = index
break
}
}
var err error
if firstFlagIndex > -1 {
args := ctx.Args()[1:firstFlagIndex]
flags := ctx.Args()[firstFlagIndex:]
err = set.Parse(append(flags, args...))
} else {
err = set.Parse(ctx.Args()[1:])
}
if err != nil {
fmt.Println("Incorrect Usage.\n")