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

     1  package fix
     2  
     3  import (
     4  	"bytes"
     5  	"fmt"
     6  	"html/template"
     7  
     8  	"github.com/JarrahG/buffalocli/internal/genny/newapp/api"
     9  	"github.com/JarrahG/buffalocli/internal/genny/newapp/web"
    10  	"github.com/gobuffalo/genny/v2"
    11  )
    12  
    13  func FixEmbed(opts *Options) genny.RunFn {
    14  	return func(r *genny.Runner) error {
    15  		fmt.Println("~~~ Checking embed.go files ~~~")
    16  
    17  		files := []string{"locales/embed.go", "public/embed.go", "templates/embed.go"}
    18  		templates, err := web.Templates()
    19  		if err != nil {
    20  			return err
    21  		}
    22  
    23  		if opts.App.AsAPI {
    24  			files = []string{"locales/embed.go"}
    25  
    26  			templates, err = api.Templates()
    27  			if err != nil {
    28  				return err
    29  			}
    30  		} else {
    31  			f := genny.NewFileS("templates/home/delete_me.txt", "you can delete this file")
    32  			if err := r.File(f); err != nil {
    33  				return err
    34  			}
    35  		}
    36  
    37  		for _, name := range files {
    38  			tmpl, err := template.New("embed.go").ParseFS(templates, name+".tmpl")
    39  			if err != nil {
    40  				return err
    41  			}
    42  
    43  			bb := &bytes.Buffer{}
    44  			if err := tmpl.ExecuteTemplate(bb, "embed.go.tmpl", nil); err != nil {
    45  				return err
    46  			}
    47  
    48  			f := genny.NewFile(name, bb)
    49  			if err := r.File(f); err != nil {
    50  				return err
    51  			}
    52  		}
    53  		return nil
    54  	}
    55  }