package tmpl import ( "html/template" "log" "os" "path/filepath" "strings" ) func Load(tpath string) (*template.Template, error) { tmpl := template.New("") loadedTemplates := make(map[string]bool) err := filepath.Walk(tpath, func(path string, info os.FileInfo, err error) error { if err != nil { return err } if !info.IsDir() && strings.HasSuffix(path, ".html") { content, err := os.ReadFile(path) if err != nil { return err } relPath, err := filepath.Rel(tpath, path) if err != nil { return err } name := strings.TrimSuffix(relPath, ".html") name = strings.ReplaceAll(name, string(filepath.Separator), "/") _, err = tmpl.New(name).Parse(string(content)) if err != nil { log.Printf("error parsing template %s: %v", name, err) return err } loadedTemplates[name] = true log.Printf("loaded template: %s", name) return err } return nil }) if err != nil { return nil, err } log.Printf("total templates loaded: %d", len(loadedTemplates)) return tmpl, nil }