github.com/JarrahG/buffalocli@v0.0.0-20230801092127-b85bfd5d395a/internal/genny/newapp/web/web.go (about)

     1  package web
     2  
     3  import (
     4  	"embed"
     5  	"html/template"
     6  	"io/fs"
     7  
     8  	"github.com/JarrahG/buffalocli/internal/genny/assets/standard"
     9  	"github.com/JarrahG/buffalocli/internal/genny/assets/webpack"
    10  	"github.com/JarrahG/buffalocli/internal/genny/newapp/core"
    11  	"github.com/gobuffalo/genny/v2"
    12  	"github.com/gobuffalo/genny/v2/gogen"
    13  )
    14  
    15  //go:embed templates/* templates/templates/_flash.plush.html.tmpl
    16  var templates embed.FS
    17  
    18  // Templates used for web project files
    19  // (exported mostly for the "fix" command)
    20  func Templates() (fs.FS, error) {
    21  	return fs.Sub(templates, "templates")
    22  }
    23  
    24  // New generator for creating a Buffalo Web application
    25  func New(opts *Options) (*genny.Group, error) {
    26  	if err := opts.Validate(); err != nil {
    27  		return nil, err
    28  	}
    29  
    30  	gg, err := core.New(opts.Options)
    31  	if err != nil {
    32  		return gg, err
    33  	}
    34  
    35  	g := genny.New()
    36  	g.Transformer(genny.Dot())
    37  	data := map[string]interface{}{
    38  		"opts": opts,
    39  	}
    40  
    41  	helpers := template.FuncMap{}
    42  
    43  	t := gogen.TemplateTransformer(data, helpers)
    44  	g.Transformer(t)
    45  	sub, err := Templates()
    46  	if err != nil {
    47  		return gg, err
    48  	}
    49  
    50  	if err := g.FS(sub); err != nil {
    51  		return gg, err
    52  	}
    53  
    54  	gg.Add(g)
    55  
    56  	if opts.Webpack != nil {
    57  		// add the webpack generator
    58  		g, err = webpack.New(opts.Webpack)
    59  		if err != nil {
    60  			return gg, err
    61  		}
    62  		gg.Add(g)
    63  	}
    64  
    65  	if opts.Standard != nil {
    66  		// add the standard generator
    67  		g, err = standard.New(opts.Standard)
    68  		if err != nil {
    69  			return gg, err
    70  		}
    71  		gg.Add(g)
    72  	}
    73  
    74  	return gg, nil
    75  }