diff options
author | wxiaoguang <wxiaoguang@gmail.com> | 2023-04-08 21:56:50 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-08 21:56:50 +0800 |
commit | 94fde46151eea73fb080fc24463291f3bdf3dbd0 (patch) | |
tree | 4b0e80b6b630023bcafc0f34b6cea4142bfb8ba3 | |
parent | fdbd64611383f8b78dc76765f6edfa3e40a3a0bf (diff) | |
download | gitea-94fde46151eea73fb080fc24463291f3bdf3dbd0.tar.gz gitea-94fde46151eea73fb080fc24463291f3bdf3dbd0.zip |
Make bindata static build parse builtin templates correctly (#24003)
Close #24002
Two problems before:
1. The `log.Fatal` is missing after these `wrapFatal` calls, so the
error is not shown to users.
2. `GetTemplateAssetNames` has different behaviors for local files and
builtin assets, for builtin assets, it also returns directories, so we
need to check the extension again.
I have tested with `TAGS="bindata sqlite sqlite_unlock_notify" make
build && ./gitea` , it works well now. Before, the server responds
internal server error (because it doesn't complete the template parsing)
-rw-r--r-- | modules/templates/htmlrenderer.go | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/modules/templates/htmlrenderer.go b/modules/templates/htmlrenderer.go index f2c818798c..4e7b09a9ec 100644 --- a/modules/templates/htmlrenderer.go +++ b/modules/templates/htmlrenderer.go @@ -67,10 +67,14 @@ func (h *HTMLRender) TemplateLookup(name string) (*template.Template, error) { func (h *HTMLRender) CompileTemplates() error { dirPrefix := "templates/" + extSuffix := ".tmpl" tmpls := template.New("") for _, path := range GetTemplateAssetNames() { - name := path[len(dirPrefix):] - name = strings.TrimSuffix(name, ".tmpl") + if !strings.HasSuffix(path, extSuffix) { + continue + } + name := strings.TrimPrefix(path, dirPrefix) + name = strings.TrimSuffix(name, extSuffix) tmpl := tmpls.New(filepath.ToSlash(name)) for _, fm := range NewFuncMap() { tmpl.Funcs(fm) @@ -101,7 +105,11 @@ func HTMLRenderer(ctx context.Context) (context.Context, *HTMLRender) { renderer := &HTMLRender{} if err := renderer.CompileTemplates(); err != nil { - handleFatalError(err) + wrapFatal(handleNotDefinedPanicError(err)) + wrapFatal(handleUnexpected(err)) + wrapFatal(handleExpectedEnd(err)) + wrapFatal(handleGenericTemplateError(err)) + log.Fatal("HTMLRenderer error: %v", err) } if !setting.IsProd { watcher.CreateWatcher(ctx, "HTML Templates", &watcher.CreateWatcherOpts{ @@ -116,13 +124,6 @@ func HTMLRenderer(ctx context.Context) (context.Context, *HTMLRender) { return context.WithValue(ctx, rendererKey, renderer), renderer } -func handleFatalError(err error) { - wrapFatal(handleNotDefinedPanicError(err)) - wrapFatal(handleUnexpected(err)) - wrapFatal(handleExpectedEnd(err)) - wrapFatal(handleGenericTemplateError(err)) -} - func wrapFatal(format string, args []interface{}) { if format == "" { return |