From 9df2a82b6d79cd8c15cb7443be233b82e9aba43c Mon Sep 17 00:00:00 2001 From: Harvey Tindall Date: Sun, 26 May 2024 18:08:48 +0100 Subject: [PATCH] router: correctly use local FS for custom HTML --- router.go | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/router.go b/router.go index 0a0cc9c..978da6e 100644 --- a/router.go +++ b/router.go @@ -24,19 +24,29 @@ func (app *appContext) loadHTML(router *gin.Engine) { app.err.Fatalf("Couldn't access template directory: \"%s\"", templatePath) return } - loadFiles := make([]string, len(htmlFiles)) - for i, f := range htmlFiles { + loadInternal := []string{} + loadExternal := []string{} + for _, f := range htmlFiles { if _, err := os.Stat(filepath.Join(customPath, f.Name())); os.IsNotExist(err) { app.debug.Printf("Using default \"%s\"", f.Name()) - loadFiles[i] = FSJoin(templatePath, f.Name()) + loadInternal = append(loadInternal, FSJoin(templatePath, f.Name())) } else { app.info.Printf("Using custom \"%s\"", f.Name()) - loadFiles[i] = filepath.Join(filepath.Join(customPath, f.Name())) + loadExternal = append(loadExternal, filepath.Join(filepath.Join(customPath, f.Name()))) } } - tmpl, err := template.ParseFS(localFS, loadFiles...) - if err != nil { - app.err.Fatalf("Failed to load templates: %v", err) + var tmpl *template.Template + if len(loadInternal) != 0 { + tmpl, err = template.ParseFS(localFS, loadInternal...) + if err != nil { + app.err.Fatalf("Failed to load templates: %v", err) + } + } + if len(loadExternal) != 0 { + tmpl, err = tmpl.ParseFiles(loadExternal...) + if err != nil { + app.err.Fatalf("Failed to load external templates: %v", err) + } } router.SetHTMLTemplate(tmpl) }