Added Before method to command. If set, or if command.Subcommands is set, then the command is treated as a recursive subcommand
This commit is contained in:
parent
1a63283d44
commit
faf2a3d4a3
7
app.go
7
app.go
@ -171,6 +171,13 @@ func (a *App) RunAsSubcommand(c *Context) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if a.Before != nil {
|
||||||
|
err := a.Before(context)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
args := context.Args()
|
args := context.Args()
|
||||||
if args.Present() {
|
if args.Present() {
|
||||||
name := args.First()
|
name := args.First()
|
||||||
|
12
command.go
12
command.go
@ -18,17 +18,20 @@ type Command struct {
|
|||||||
Description string
|
Description string
|
||||||
// The function to call when checking for bash command completions
|
// The function to call when checking for bash command completions
|
||||||
BashComplete func(context *Context)
|
BashComplete func(context *Context)
|
||||||
|
// An action to execute before any sub-subcommands are run, but after the context is ready
|
||||||
|
// If a non-nil error is returned, no sub-subcommands are run
|
||||||
|
Before func(context *Context) error
|
||||||
// The function to call when this command is invoked
|
// The function to call when this command is invoked
|
||||||
Action func(context *Context)
|
Action func(context *Context)
|
||||||
// List of flags to parse
|
|
||||||
Flags []Flag
|
|
||||||
// List of child commands
|
// List of child commands
|
||||||
Subcommands []Command
|
Subcommands []Command
|
||||||
|
// List of flags to parse
|
||||||
|
Flags []Flag
|
||||||
}
|
}
|
||||||
|
|
||||||
// Invokes the command given the context, parses ctx.Args() to generate command-specific flags
|
// Invokes the command given the context, parses ctx.Args() to generate command-specific flags
|
||||||
func (c Command) Run(ctx *Context) error {
|
func (c Command) Run(ctx *Context) error {
|
||||||
if len(c.Subcommands) > 0 {
|
if (c.Subcommands != nil && len(c.Subcommands) > 0) || c.Before != nil {
|
||||||
return c.startApp(ctx)
|
return c.startApp(ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -117,7 +120,8 @@ func (c Command) startApp(ctx *Context) error {
|
|||||||
app.BashComplete = c.BashComplete
|
app.BashComplete = c.BashComplete
|
||||||
}
|
}
|
||||||
|
|
||||||
// set the action
|
// set the actions
|
||||||
|
app.Before = c.Before
|
||||||
if c.Action != nil {
|
if c.Action != nil {
|
||||||
app.Action = c.Action
|
app.Action = c.Action
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user