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  }