github.com/gobuffalo/buffalo-cli/v2@v2.0.0-alpha.15.0.20200919213536-a7350c8e6799/cli/cmds/build/find.go (about) 1 package build 2 3 import ( 4 "path" 5 "strings" 6 7 "github.com/gobuffalo/plugins" 8 ) 9 10 func FindBuilderFromArgs(args []string, plugs []plugins.Plugin) Builder { 11 for _, a := range args { 12 if strings.HasPrefix(a, "-") { 13 continue 14 } 15 return FindBuilder(a, plugs) 16 } 17 return nil 18 } 19 20 func FindBuilder(name string, plugs []plugins.Plugin) Builder { 21 // Find wraps the other cmd finders into a mega finder for cmds 22 for _, p := range plugs { 23 c, ok := p.(Builder) 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 }