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