Provide the length of Args when a -- is found in commandline

This allows a program to know what args came before the -- and what args
came after.
This commit is contained in:
Eric Paris 2015-09-16 12:31:41 -04:00
parent 4b76e97cd6
commit edde52e321
2 changed files with 12 additions and 2 deletions

View file

@ -416,8 +416,11 @@ func TestGrandChildSameName(t *testing.T) {
} }
func TestFlagLong(t *testing.T) { func TestFlagLong(t *testing.T) {
noRRSetupTest("echo --intone=13 something here") noRRSetupTest("echo --intone=13 something -- here")
if cmdEcho.ArgsLenAtDash() != 1 {
t.Errorf("expected argsLenAtDash: %d but got %d", 1, cmdRootNoRun.ArgsLenAtDash())
}
if strings.Join(te, " ") != "something here" { if strings.Join(te, " ") != "something here" {
t.Errorf("flags didn't leave proper args remaining..%s given", te) t.Errorf("flags didn't leave proper args remaining..%s given", te)
} }
@ -430,8 +433,11 @@ func TestFlagLong(t *testing.T) {
} }
func TestFlagShort(t *testing.T) { func TestFlagShort(t *testing.T) {
noRRSetupTest("echo -i13 something here") noRRSetupTest("echo -i13 -- something here")
if cmdEcho.ArgsLenAtDash() != 0 {
t.Errorf("expected argsLenAtDash: %d but got %d", 0, cmdRootNoRun.ArgsLenAtDash())
}
if strings.Join(te, " ") != "something here" { if strings.Join(te, " ") != "something here" {
t.Errorf("flags didn't leave proper args remaining..%s given", te) t.Errorf("flags didn't leave proper args remaining..%s given", te)
} }

View file

@ -470,6 +470,10 @@ func (c *Command) Root() *Command {
return findRoot(c) return findRoot(c)
} }
func (c *Command) ArgsLenAtDash() int {
return c.Flags().ArgsLenAtDash()
}
func (c *Command) execute(a []string) (err error) { func (c *Command) execute(a []string) (err error) {
if c == nil { if c == nil {
return fmt.Errorf("Called Execute() on a nil Command") return fmt.Errorf("Called Execute() on a nil Command")