51 lines
1.1 KiB
Go
51 lines
1.1 KiB
Go
|
package myCobra
|
||
|
|
||
|
import (
|
||
|
"github.com/spf13/cobra"
|
||
|
)
|
||
|
|
||
|
type SimpleCmd struct {
|
||
|
Use string
|
||
|
Short string
|
||
|
Example string
|
||
|
PreRun func()
|
||
|
RunE func() error
|
||
|
cobraModel *cobra.Command
|
||
|
}
|
||
|
|
||
|
func (t *SimpleCmd) GetCobra() *cobra.Command {
|
||
|
if t.cobraModel == nil {
|
||
|
t.cobraModel = &cobra.Command{
|
||
|
Use: t.Use,
|
||
|
Short: t.Short,
|
||
|
Example: t.Example,
|
||
|
SilenceUsage: true,
|
||
|
PreRun: func(cmd *cobra.Command, args []string) {
|
||
|
t.PreRun()
|
||
|
},
|
||
|
RunE: func(cmd *cobra.Command, args []string) error {
|
||
|
return t.RunE()
|
||
|
},
|
||
|
}
|
||
|
}
|
||
|
return t.cobraModel
|
||
|
}
|
||
|
|
||
|
func (t *SimpleCmd) SetArgsFunc(argsFunc func(args []string) error) {
|
||
|
t.GetCobra().Args = func(cmd *cobra.Command, args []string) error {
|
||
|
return argsFunc(args)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (t *SimpleCmd) SetStringVar(p *string, name, shorthand string, value string, usage string) {
|
||
|
t.GetCobra().PersistentFlags().StringVarP(p, name, shorthand, value, usage)
|
||
|
}
|
||
|
|
||
|
func (t *SimpleCmd) AddCommand(cmd *SimpleCmd) {
|
||
|
t.GetCobra().AddCommand(cmd.GetCobra())
|
||
|
}
|
||
|
|
||
|
func (t *SimpleCmd) Execute() error {
|
||
|
return t.GetCobra().Execute()
|
||
|
}
|