mirror of
https://github.com/spf13/cobra
synced 2025-05-06 13:27:26 +00:00
Run Persistent*Run from root to sub
Call all Persitent*Run defined from sub to root Signed-off-by: Alexander Trost <galexrt@googlemail.com>
This commit is contained in:
parent
a114f312e0
commit
5876e5a9de
1 changed files with 15 additions and 4 deletions
19
command.go
19
command.go
|
@ -736,17 +736,22 @@ func (c *Command) execute(a []string) (err error) {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
persistentPreRuns := []*Command{}
|
||||||
for p := c; p != nil; p = p.Parent() {
|
for p := c; p != nil; p = p.Parent() {
|
||||||
|
persistentPreRuns = append(persistentPreRuns, p)
|
||||||
|
}
|
||||||
|
|
||||||
|
for i := len(persistentPreRuns) - 1; i >= 0; i-- {
|
||||||
|
p := persistentPreRuns[i]
|
||||||
if p.PersistentPreRunE != nil {
|
if p.PersistentPreRunE != nil {
|
||||||
if err := p.PersistentPreRunE(c, argWoFlags); err != nil {
|
if err := p.PersistentPreRunE(c, argWoFlags); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
break
|
|
||||||
} else if p.PersistentPreRun != nil {
|
} else if p.PersistentPreRun != nil {
|
||||||
p.PersistentPreRun(c, argWoFlags)
|
p.PersistentPreRun(c, argWoFlags)
|
||||||
break
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if c.PreRunE != nil {
|
if c.PreRunE != nil {
|
||||||
if err := c.PreRunE(c, argWoFlags); err != nil {
|
if err := c.PreRunE(c, argWoFlags); err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -765,6 +770,7 @@ func (c *Command) execute(a []string) (err error) {
|
||||||
} else {
|
} else {
|
||||||
c.Run(c, argWoFlags)
|
c.Run(c, argWoFlags)
|
||||||
}
|
}
|
||||||
|
|
||||||
if c.PostRunE != nil {
|
if c.PostRunE != nil {
|
||||||
if err := c.PostRunE(c, argWoFlags); err != nil {
|
if err := c.PostRunE(c, argWoFlags); err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -772,15 +778,20 @@ func (c *Command) execute(a []string) (err error) {
|
||||||
} else if c.PostRun != nil {
|
} else if c.PostRun != nil {
|
||||||
c.PostRun(c, argWoFlags)
|
c.PostRun(c, argWoFlags)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
persistentPostRuns := []*Command{}
|
||||||
for p := c; p != nil; p = p.Parent() {
|
for p := c; p != nil; p = p.Parent() {
|
||||||
|
persistentPostRuns = append(persistentPostRuns, p)
|
||||||
|
}
|
||||||
|
|
||||||
|
for i := len(persistentPostRuns) - 1; i >= 0; i-- {
|
||||||
|
p := persistentPostRuns[i]
|
||||||
if p.PersistentPostRunE != nil {
|
if p.PersistentPostRunE != nil {
|
||||||
if err := p.PersistentPostRunE(c, argWoFlags); err != nil {
|
if err := p.PersistentPostRunE(c, argWoFlags); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
break
|
|
||||||
} else if p.PersistentPostRun != nil {
|
} else if p.PersistentPostRun != nil {
|
||||||
p.PersistentPostRun(c, argWoFlags)
|
p.PersistentPostRun(c, argWoFlags)
|
||||||
break
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue