github.com/JarrahG/buffalocli@v0.0.0-20230801092127-b85bfd5d395a/internal/genny/newapp/api/api.go (about) 1 package api 2 3 import ( 4 "embed" 5 "html/template" 6 "io/fs" 7 8 "github.com/JarrahG/buffalocli/internal/genny/newapp/core" 9 "github.com/gobuffalo/genny/v2" 10 "github.com/gobuffalo/genny/v2/gogen" 11 ) 12 13 //go:embed templates/* 14 var templates embed.FS 15 16 // Templates used for api project files 17 // (exported mostly for the "fix" command) 18 func Templates() (fs.FS, error) { 19 return fs.Sub(templates, "templates") 20 } 21 22 // New generator for creating a Buffalo API application 23 func New(opts *Options) (*genny.Group, error) { 24 if err := opts.Validate(); err != nil { 25 return nil, err 26 } 27 28 gg, err := core.New(opts.Options) 29 if err != nil { 30 return gg, err 31 } 32 33 g := genny.New() 34 data := map[string]interface{}{ 35 "opts": opts, 36 } 37 38 helpers := template.FuncMap{} 39 40 t := gogen.TemplateTransformer(data, helpers) 41 g.Transformer(t) 42 sub, err := Templates() 43 if err != nil { 44 return gg, err 45 } 46 47 if err := g.FS(sub); err != nil { 48 return gg, err 49 } 50 51 gg.Add(g) 52 return gg, nil 53 }