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  }