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

     1  package fix
     2  
     3  import (
     4  	"path"
     5  	"strings"
     6  
     7  	"github.com/gobuffalo/plugins"
     8  )
     9  
    10  func FindFixerFromArgs(args []string, plugs []plugins.Plugin) Fixer {
    11  	for _, a := range args {
    12  		if strings.HasPrefix(a, "-") {
    13  			continue
    14  		}
    15  		return FindFixer(a, plugs)
    16  	}
    17  	return nil
    18  }
    19  
    20  func FindFixer(name string, plugs []plugins.Plugin) Fixer {
    21  	// Find wraps the other cmd finders into a mega finder for cmds
    22  	for _, p := range plugs {
    23  		c, ok := p.(Fixer)
    24  		if !ok {
    25  			continue
    26  		}
    27  		if n, ok := c.(Namer); ok {
    28  			if n.CmdName() == name {
    29  				return c
    30  			}
    31  		}
    32  
    33  		if n, ok := c.(Aliaser); ok {
    34  			for _, a := range n.CmdAliases() {
    35  				if a == name {
    36  					return c
    37  				}
    38  			}
    39  		}
    40  
    41  		if name == path.Base(c.PluginName()) {
    42  			return c
    43  		}
    44  	}
    45  	return nil
    46  }