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  }