github.com/dolanor/pop@v4.13.0+incompatible/genny/config/config.go (about)

     1  package config
     2  
     3  import (
     4  	"fmt"
     5  	"path/filepath"
     6  
     7  	"github.com/gobuffalo/genny"
     8  	"github.com/gobuffalo/genny/gogen"
     9  	"github.com/gobuffalo/packr/v2"
    10  )
    11  
    12  var templates = packr.New("pop:genny:config", "../config/templates")
    13  
    14  // New generator to create a database.yml file
    15  func New(opts *Options) (*genny.Generator, error) {
    16  	g := genny.New()
    17  	if err := opts.Validate(); err != nil {
    18  		return g, err
    19  	}
    20  
    21  	f, err := templates.Open(opts.Dialect + ".yml.tmpl")
    22  	if err != nil {
    23  		return g, fmt.Errorf("unable to find database.yml template for dialect %s", opts.Dialect)
    24  	}
    25  
    26  	name := filepath.Join(opts.Root, opts.FileName+".tmpl")
    27  	gf := genny.NewFile(name, f)
    28  	g.File(gf)
    29  
    30  	data := map[string]interface{}{
    31  		"opts": opts,
    32  	}
    33  
    34  	t := gogen.TemplateTransformer(data, gogen.TemplateHelpers)
    35  	g.Transformer(t)
    36  	g.Transformer(genny.Dot())
    37  
    38  	return g, nil
    39  }