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

     1  package standard
     2  
     3  import (
     4  	"embed"
     5  	"io/fs"
     6  	"strings"
     7  	"text/template"
     8  
     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  // New generator for creating basic asset files
    17  func New(opts *Options) (*genny.Generator, error) {
    18  	g := genny.New()
    19  
    20  	sub, err := fs.Sub(templates, "templates")
    21  	if err != nil {
    22  		return g, err
    23  	}
    24  
    25  	if err := g.FS(sub); err != nil {
    26  		return g, err
    27  	}
    28  
    29  	data := map[string]interface{}{}
    30  	h := template.FuncMap{}
    31  	t := gogen.TemplateTransformer(data, h)
    32  	g.Transformer(t)
    33  
    34  	g.RunFn(func(r *genny.Runner) error {
    35  		f, err := r.FindFile("templates/application.plush.html")
    36  		if err != nil {
    37  			return err
    38  		}
    39  
    40  		s := strings.Replace(f.String(), "</title>", "</title>\n"+bs4, 1)
    41  		return r.File(genny.NewFileS(f.Name(), s))
    42  	})
    43  
    44  	return g, nil
    45  }
    46  
    47  const bs4 = `<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">`