mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 19:06:18 +01:00 
			
		
		
		
	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)
This commit is contained in:
		| @@ -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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user