github.com/segakazzz/buffalo@v0.16.22-0.20210119082501-1f52048d3feb/genny/newapp/core/root.go (about) 1 package core 2 3 import ( 4 "html/template" 5 "os/exec" 6 7 "github.com/BurntSushi/toml" 8 "github.com/gobuffalo/genny/v2" 9 "github.com/gobuffalo/genny/v2/gogen" 10 "github.com/gobuffalo/packr/v2" 11 ) 12 13 func rootGenerator(opts *Options) (*genny.Generator, error) { 14 g := genny.New() 15 16 // validate opts 17 if err := opts.Validate(); err != nil { 18 return g, err 19 } 20 21 g.Command(exec.Command("go", "mod", "init", opts.App.PackagePkg)) 22 23 g.Transformer(genny.Dot()) 24 25 // add common templates 26 if err := g.Box(packr.New("buffalo:genny:newapp:core", "../core/templates")); err != nil { 27 return g, err 28 } 29 30 data := map[string]interface{}{ 31 "opts": opts, 32 } 33 34 helpers := template.FuncMap{} 35 36 t := gogen.TemplateTransformer(data, helpers) 37 g.Transformer(t) 38 39 g.RunFn(func(r *genny.Runner) error { 40 f := genny.NewFile("config/buffalo-app.toml", nil) 41 if err := toml.NewEncoder(f).Encode(opts.App); err != nil { 42 return err 43 } 44 return r.File(f) 45 }) 46 47 return g, nil 48 }