embeded templates
This commit is contained in:
parent
bf78461bbb
commit
9e4d1a6a28
18 changed files with 63 additions and 58 deletions
7
embed/embed.go
Normal file
7
embed/embed.go
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
package embed
|
||||||
|
|
||||||
|
import "embed"
|
||||||
|
|
||||||
|
//go:embed templates/*.tmpl templates/**/*
|
||||||
|
var Templates embed.FS
|
||||||
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
package config
|
package config
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"github.com/spf13/viper"
|
"github.com/spf13/viper"
|
||||||
"{{.ModName}}/internal/logger"
|
"{{.ModName}}/internal/logger"
|
||||||
)
|
)
|
||||||
|
|
@ -16,11 +16,4 @@ func init() {
|
||||||
Level: log.InfoLevel,
|
Level: log.InfoLevel,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
func initLogging() {
|
|
||||||
level, err := log.ParseLevel(logLevel)
|
|
||||||
if err != nil {
|
|
||||||
Log.Warn("Invalid log level; defaulting to info", "input", logLevel)
|
|
||||||
level = log.InfoLevel
|
|
||||||
}
|
|
||||||
Log.SetLevel(level)
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,13 @@
|
||||||
package render
|
package render
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"io/fs"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
"text/template"
|
"text/template"
|
||||||
|
|
||||||
|
"specCon18/bubblewand/embed"
|
||||||
"specCon18/bubblewand/internal/logger"
|
"specCon18/bubblewand/internal/logger"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -17,29 +20,32 @@ type ProgramData struct {
|
||||||
OutputDir string
|
OutputDir string
|
||||||
}
|
}
|
||||||
|
|
||||||
// RenderTemplates renders all .tmpl files from the templates/ directory into outputDir
|
// RenderTemplates renders embedded .tmpl files into outputDir
|
||||||
func RenderTemplates(data ProgramData, outputDir string, verbose bool) error {
|
func RenderTemplates(data ProgramData, outputDir string, verbose bool) error {
|
||||||
var renderedFiles int
|
var renderedFiles int
|
||||||
|
|
||||||
err := filepath.Walk("templates", func(path string, info os.FileInfo, err error) error {
|
err := fs.WalkDir(embed.Templates, "templates", func(path string, d fs.DirEntry, err error) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if info.IsDir() || !strings.HasSuffix(info.Name(), ".tmpl") {
|
if d.IsDir() || !strings.HasSuffix(d.Name(), ".tmpl") {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
relPath, err := filepath.Rel("templates", path)
|
// Get relative path inside templates/
|
||||||
if err != nil {
|
relPath := strings.TrimPrefix(path, "templates/")
|
||||||
return err
|
|
||||||
}
|
|
||||||
outputPath := filepath.Join(outputDir, strings.TrimSuffix(relPath, ".tmpl"))
|
outputPath := filepath.Join(outputDir, strings.TrimSuffix(relPath, ".tmpl"))
|
||||||
|
|
||||||
if err := os.MkdirAll(filepath.Dir(outputPath), 0755); err != nil {
|
if err := os.MkdirAll(filepath.Dir(outputPath), 0755); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
tmpl, err := template.ParseFiles(path)
|
tmplBytes, err := embed.Templates.ReadFile(path)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
tmpl, err := template.New(d.Name()).Parse(string(tmplBytes))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue