github.com/segakazzz/buffalo@v0.16.22-0.20210119082501-1f52048d3feb/genny/newapp/core/core.go (about) 1 package core 2 3 import ( 4 pop "github.com/gobuffalo/buffalo-pop/v2/genny/newapp" 5 "github.com/gobuffalo/buffalo/genny/ci" 6 "github.com/gobuffalo/buffalo/genny/docker" 7 "github.com/gobuffalo/buffalo/genny/plugins/install" 8 "github.com/gobuffalo/buffalo/genny/refresh" 9 "github.com/gobuffalo/buffalo/plugins/plugdeps" 10 "github.com/gobuffalo/genny/v2" 11 "github.com/gobuffalo/meta" 12 "github.com/segakazzz/buffalo/internal/takeon/github.com/markbates/errx" 13 ) 14 15 // New generator for creating a Buffalo application 16 func New(opts *Options) (*genny.Group, error) { 17 gg := &genny.Group{} 18 19 // add the root generator 20 g, err := rootGenerator(opts) 21 if err != nil { 22 return gg, err 23 } 24 gg.Add(g) 25 26 app := opts.App 27 28 plugs, err := plugdeps.List(app) 29 if err != nil && (errx.Unwrap(err) != plugdeps.ErrMissingConfig) { 30 return nil, err 31 } 32 33 if opts.Docker != nil { 34 // add the docker generator 35 g, err = docker.New(opts.Docker) 36 if err != nil { 37 return gg, err 38 } 39 gg.Add(g) 40 } 41 42 if opts.Pop != nil { 43 // add the pop generator 44 gg2, err := pop.New(opts.Pop) 45 if err != nil { 46 return gg, err 47 } 48 gg.Merge(gg2) 49 50 // add the plugin 51 plugs.Add(plugdeps.Plugin{ 52 Binary: "buffalo-pop", 53 GoGet: "github.com/gobuffalo/buffalo-pop/v2", 54 }) 55 } 56 57 if opts.CI != nil { 58 // add the CI generator 59 g, err = ci.New(opts.CI) 60 if err != nil { 61 return gg, err 62 } 63 gg.Add(g) 64 } 65 66 if opts.Refresh != nil { 67 g, err = refresh.New(opts.Refresh) 68 if err != nil { 69 return gg, err 70 } 71 gg.Add(g) 72 } 73 74 // --- 75 76 // install all of the plugins 77 iopts := &install.Options{ 78 App: app, 79 Plugins: plugs.List(), 80 } 81 if app.WithSQLite { 82 iopts.Tags = meta.BuildTags{"sqlite"} 83 } 84 85 ig, err := install.New(iopts) 86 if err != nil { 87 return gg, err 88 } 89 gg.Merge(ig) 90 91 return gg, nil 92 }