Add service orchestration and web UI
This commit is contained in:
43
internal/service/templates/templates.go
Normal file
43
internal/service/templates/templates.go
Normal file
@@ -0,0 +1,43 @@
|
||||
package templates
|
||||
|
||||
import (
|
||||
"embed"
|
||||
"fmt"
|
||||
"html/template"
|
||||
"io/fs"
|
||||
"strings"
|
||||
)
|
||||
|
||||
//go:embed static/*
|
||||
var static embed.FS
|
||||
|
||||
const fileType = ".gohtml"
|
||||
|
||||
// Parse walks the embedded static directory and parses all .gohtml templates.
|
||||
func Parse() (*template.Template, error) {
|
||||
tmpl := template.New("")
|
||||
|
||||
parseFS := func(path string, d fs.DirEntry, err error) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if d.IsDir() {
|
||||
return nil
|
||||
}
|
||||
if strings.Contains(path, fileType) {
|
||||
if _, err := tmpl.ParseFS(static, path); err != nil {
|
||||
return fmt.Errorf(
|
||||
"failed to parse template %s: %w",
|
||||
path, err,
|
||||
)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
if err := fs.WalkDir(static, ".", parseFS); err != nil {
|
||||
return nil, fmt.Errorf("failed to parse templates: %w", err)
|
||||
}
|
||||
|
||||
return tmpl, nil
|
||||
}
|
||||
Reference in New Issue
Block a user