github.com/gobuffalo/buffalo-cli/v2@v2.0.0-alpha.15.0.20200919213536-a7350c8e6799/cli/cmds/setup/cmd.go (about) 1 package setup 2 3 import ( 4 "github.com/gobuffalo/plugins" 5 "github.com/gobuffalo/plugins/plugcmd" 6 "github.com/spf13/pflag" 7 ) 8 9 var _ plugcmd.Commander = &Cmd{} 10 var _ plugcmd.SubCommander = &Cmd{} 11 var _ plugins.Needer = &Cmd{} 12 var _ plugins.Plugin = &Cmd{} 13 var _ plugins.Scoper = &Cmd{} 14 15 type Cmd struct { 16 pluginsFn plugins.Feeder 17 flags *pflag.FlagSet 18 help bool 19 } 20 21 func (Cmd) PluginName() string { 22 return "setup" 23 } 24 25 func (cmd *Cmd) WithPlugins(f plugins.Feeder) { 26 cmd.pluginsFn = f 27 } 28 29 func (cmd *Cmd) ScopedPlugins() []plugins.Plugin { 30 var plugs []plugins.Plugin 31 if cmd.pluginsFn == nil { 32 return plugs 33 } 34 35 for _, p := range cmd.pluginsFn() { 36 switch p.(type) { 37 case Setuper: 38 plugs = append(plugs, p) 39 case BeforeSetuper: 40 plugs = append(plugs, p) 41 case AfterSetuper: 42 plugs = append(plugs, p) 43 case Stdouter: 44 plugs = append(plugs, p) 45 case Flagger: 46 plugs = append(plugs, p) 47 case Pflagger: 48 plugs = append(plugs, p) 49 } 50 } 51 52 return plugs 53 } 54 55 func (cmd *Cmd) SubCommands() []plugins.Plugin { 56 var plugs []plugins.Plugin 57 58 for _, p := range cmd.ScopedPlugins() { 59 switch p.(type) { 60 case Setuper: 61 plugs = append(plugs, p) 62 } 63 } 64 65 return plugs 66 }