github.com/gobuffalo/buffalo-cli/v2@v2.0.0-alpha.15.0.20200919213536-a7350c8e6799/cli/cmds/setup/flags.go (about)

     1  package setup
     2  
     3  import (
     4  	"io"
     5  
     6  	"github.com/gobuffalo/buffalo-cli/v2/internal/flagger"
     7  	"github.com/gobuffalo/plugins/plugflag"
     8  	"github.com/spf13/pflag"
     9  )
    10  
    11  func (cmd *Cmd) Flags() *pflag.FlagSet {
    12  	if cmd.flags != nil {
    13  		return cmd.flags
    14  	}
    15  	flags := pflag.NewFlagSet(cmd.PluginName(), pflag.ContinueOnError)
    16  	flags.BoolVarP(&cmd.help, "help", "h", false, "print this help")
    17  
    18  	for _, p := range cmd.ScopedPlugins() {
    19  		switch t := p.(type) {
    20  		case Flagger:
    21  			for _, f := range plugflag.Clean(p, t.SetupFlags()) {
    22  				flags.AddGoFlag(f)
    23  			}
    24  		case Pflagger:
    25  			for _, f := range flagger.CleanPflags(p, t.SetupFlags()) {
    26  				flags.AddFlag(f)
    27  			}
    28  		}
    29  	}
    30  
    31  	cmd.flags = flags
    32  	return cmd.flags
    33  }
    34  
    35  func (cmd *Cmd) PrintFlags(w io.Writer) error {
    36  	flags := cmd.Flags()
    37  	flags.SetOutput(w)
    38  	flags.PrintDefaults()
    39  	return nil
    40  }