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  }