diff --git a/frontend/frontend.go b/frontend/frontend.go index ff7ace835..c49b00517 100644 --- a/frontend/frontend.go +++ b/frontend/frontend.go @@ -1,6 +1,7 @@ package frontend import ( + "fmt" "io/ioutil" "net/http" @@ -16,23 +17,34 @@ import ( //TODO: log last update -//loadTemplate loads a single template from statikFS and returns a template object -func loadTemplate(templateName string, funcMap template.FuncMap) (*template.Template, error) { - tmpl := template.New(templateName).Funcs(funcMap) +//loadTemplate loads a list of templates, relative to the statikFS root, and a FuncMap, and returns a template object +func loadTemplate(templateNames []string, funcMap template.FuncMap) (*template.Template, error) { + if len(templateNames) == 0 { + return nil, fmt.Errorf("templateNames can't be empty") + } + tmpl := template.New(templateNames[0]).Funcs(funcMap) statikFS, err := fs.New() if err != nil { return nil, err } - r, err := statikFS.Open("/" + templateName) - if err != nil { - return nil, err + + for _, templateName := range templateNames { + r, err := statikFS.Open("/" + templateName) + if err != nil { + return nil, err + } + defer r.Close() + contents, err := ioutil.ReadAll(r) + if err != nil { + return nil, err + } + tmpl, err = tmpl.Parse(string(contents)) + if err != nil { + return nil, err + } } - defer r.Close() - contents, err := ioutil.ReadAll(r) - if err != nil { - return nil, err - } - return tmpl.Parse(string(contents)) + + return tmpl, nil } // MakeFrontend configures the router and returns a new Frontend struct