github.com/gobuffalo/buffalo-cli/v2@v2.0.0-alpha.15.0.20200919213536-a7350c8e6799/cli/cmds/setup/main.go (about) 1 package setup 2 3 import ( 4 "context" 5 6 "github.com/gobuffalo/plugins" 7 "github.com/gobuffalo/plugins/plugio" 8 "github.com/gobuffalo/plugins/plugprint" 9 ) 10 11 func (cmd *Cmd) Main(ctx context.Context, root string, args []string) error { 12 plugs := cmd.ScopedPlugins() 13 if p := FindSetuperFromArgs(args, plugs); p != nil { 14 return p.Setup(ctx, root, args[1:]) 15 } 16 17 flags := cmd.Flags() 18 if err := flags.Parse(args); err != nil { 19 return plugins.Wrap(cmd, err) 20 } 21 22 args = flags.Args() 23 24 if cmd.help { 25 return plugprint.Print(plugio.Stdout(plugs...), cmd) 26 } 27 28 err := cmd.run(ctx, root, args) 29 return cmd.afterSetup(ctx, root, args, err) 30 } 31 32 func (cmd *Cmd) run(ctx context.Context, root string, args []string) error { 33 if err := cmd.beforeSetup(ctx, root, args); err != nil { 34 return plugins.Wrap(cmd, err) 35 } 36 37 for _, p := range cmd.ScopedPlugins() { 38 if s, ok := p.(Setuper); ok { 39 if err := s.Setup(ctx, root, args); err != nil { 40 return plugins.Wrap(s, err) 41 } 42 } 43 } 44 45 return nil 46 } 47 48 func (cmd *Cmd) beforeSetup(ctx context.Context, root string, args []string) error { 49 plugs := cmd.ScopedPlugins() 50 51 for _, p := range plugs { 52 if bb, ok := p.(BeforeSetuper); ok { 53 if err := bb.BeforeSetup(ctx, root, args); err != nil { 54 return plugins.Wrap(bb, err) 55 } 56 } 57 } 58 59 return nil 60 } 61 62 func (cmd *Cmd) afterSetup(ctx context.Context, root string, args []string, err error) error { 63 plugs := cmd.ScopedPlugins() 64 65 for _, p := range plugs { 66 if bb, ok := p.(AfterSetuper); ok { 67 if err := bb.AfterSetup(ctx, root, args, err); err != nil { 68 return plugins.Wrap(bb, err) 69 } 70 } 71 } 72 return err 73 }