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  }