github.com/gobuffalo/buffalo-cli/v2@v2.0.0-alpha.15.0.20200919213536-a7350c8e6799/internal/flagger/flagger.go (about) 1 package flagger 2 3 import ( 4 "fmt" 5 "path" 6 7 "github.com/gobuffalo/plugins" 8 "github.com/spf13/pflag" 9 ) 10 11 func CleanPflags(p plugins.Plugin, pflags []*pflag.Flag) []*pflag.Flag { 12 flags := make([]*pflag.Flag, len(pflags)) 13 for i, f := range pflags { 14 flags[i] = &pflag.Flag{ 15 Name: fmt.Sprintf("%s-%s", path.Base(name(p)), f.Name), 16 Usage: fmt.Sprintf("[%s] %s", p.PluginName(), f.Usage), 17 Value: f.Value, 18 DefValue: f.DefValue, 19 NoOptDefVal: f.NoOptDefVal, 20 } 21 } 22 return flags 23 } 24 25 // SetToSlice takes a flag set and returns a slice 26 // of the flags 27 func SetToSlice(set *pflag.FlagSet) []*pflag.Flag { 28 var flags []*pflag.Flag 29 set.VisitAll(func(f *pflag.Flag) { 30 flags = append(flags, f) 31 }) 32 return flags 33 } 34 35 func name(p plugins.Plugin) string { 36 type cmdName interface { 37 CmdName() string 38 } 39 if c, ok := p.(cmdName); ok { 40 return c.CmdName() 41 } 42 return p.PluginName() 43 }