github.com/segakazzz/buffalo@v0.16.22-0.20210119082501-1f52048d3feb/genny/newapp/web/web.go (about) 1 package web 2 3 import ( 4 "html/template" 5 6 "github.com/gobuffalo/buffalo/genny/assets/standard" 7 "github.com/gobuffalo/buffalo/genny/assets/webpack" 8 "github.com/gobuffalo/buffalo/genny/newapp/core" 9 "github.com/gobuffalo/genny/v2" 10 "github.com/gobuffalo/genny/v2/gogen" 11 "github.com/gobuffalo/packr/v2" 12 ) 13 14 // New generator for creating a Buffalo Web application 15 func New(opts *Options) (*genny.Group, error) { 16 if err := opts.Validate(); err != nil { 17 return nil, err 18 } 19 20 gg, err := core.New(opts.Options) 21 if err != nil { 22 return gg, err 23 } 24 25 g := genny.New() 26 g.Transformer(genny.Dot()) 27 data := map[string]interface{}{ 28 "opts": opts, 29 } 30 31 helpers := template.FuncMap{} 32 33 t := gogen.TemplateTransformer(data, helpers) 34 g.Transformer(t) 35 g.Box(packr.New("github.com/gobuffalo/buffalo:genny/newapp/web", "../web/templates")) 36 37 gg.Add(g) 38 39 if opts.Webpack != nil { 40 // add the webpack generator 41 g, err = webpack.New(opts.Webpack) 42 if err != nil { 43 return gg, err 44 } 45 gg.Add(g) 46 } 47 48 if opts.Standard != nil { 49 // add the standard generator 50 g, err = standard.New(opts.Standard) 51 if err != nil { 52 return gg, err 53 } 54 gg.Add(g) 55 } 56 57 return gg, nil 58 }