github.com/gobuffalo/buffalo-cli/v2@v2.0.0-alpha.15.0.20200919213536-a7350c8e6799/cli/cmds/develop/main.go (about) 1 package develop 2 3 import ( 4 "context" 5 6 "github.com/gobuffalo/plugins" 7 "github.com/gobuffalo/plugins/plugio" 8 "github.com/gobuffalo/plugins/plugprint" 9 "golang.org/x/sync/errgroup" 10 ) 11 12 func (cmd *Cmd) Main(ctx context.Context, root string, args []string) error { 13 plugs := cmd.ScopedPlugins() 14 if sub := FindDeveloperFromArgs(args, plugs); sub != nil { 15 return sub.Develop(ctx, root, args[1:]) 16 } 17 18 flags := cmd.Flags() 19 if err := flags.Parse(args); err != nil { 20 return plugins.Wrap(cmd, err) 21 } 22 23 if cmd.help { 24 return plugprint.Print(plugio.Stdout(cmd.ScopedPlugins()...), cmd) 25 } 26 27 args = flags.Args() 28 29 ctx, cancel := context.WithCancel(ctx) 30 defer cancel() 31 32 wg := &errgroup.Group{} 33 34 for _, p := range cmd.ScopedPlugins() { 35 if d, ok := p.(Developer); ok { 36 wg.Go(func() error { 37 err := d.Develop(ctx, root, args) 38 return plugins.Wrap(d, err) 39 }) 40 } 41 } 42 43 return wg.Wait() 44 }