diff options
author | Brecht Van Lommel <brecht@blender.org> | 2023-05-22 17:51:40 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-22 23:51:40 +0800 |
commit | 3588edbb08f93aaa56defa82dffdbb202cd9aa4a (patch) | |
tree | ad3b571f18534d3932642d3c069c495a31e9966c /modules | |
parent | 922c83eea3407746a0472e5e3ad8b78a3136c661 (diff) | |
download | gitea-3588edbb08f93aaa56defa82dffdbb202cd9aa4a.tar.gz gitea-3588edbb08f93aaa56defa82dffdbb202cd9aa4a.zip |
Add gitea manager reload-templates command (#24843)
This can be useful to update custom templates in production mode, when
they are updated frequently and a full Gitea restart each time is
disruptive.
Diffstat (limited to 'modules')
-rw-r--r-- | modules/private/manager.go | 7 | ||||
-rw-r--r-- | modules/templates/htmlrenderer.go | 12 |
2 files changed, 16 insertions, 3 deletions
diff --git a/modules/private/manager.go b/modules/private/manager.go index a974c3ed05..382986bf1d 100644 --- a/modules/private/manager.go +++ b/modules/private/manager.go @@ -29,6 +29,13 @@ func Restart(ctx context.Context) ResponseExtra { return requestJSONClientMsg(req, "Restarting") } +// ReloadTemplates calls the internal reload-templates function +func ReloadTemplates(ctx context.Context) ResponseExtra { + reqURL := setting.LocalURL + "api/internal/manager/reload-templates" + req := newInternalRequest(ctx, reqURL, "POST") + return requestJSONClientMsg(req, "Reloaded") +} + // FlushOptions represents the options for the flush call type FlushOptions struct { Timeout time.Duration diff --git a/modules/templates/htmlrenderer.go b/modules/templates/htmlrenderer.go index 311e5b741d..21c268da78 100644 --- a/modules/templates/htmlrenderer.go +++ b/modules/templates/htmlrenderer.go @@ -96,6 +96,14 @@ func HTMLRenderer() *HTMLRender { return htmlRender } +func ReloadHTMLTemplates() error { + if err := htmlRender.CompileTemplates(); err != nil { + log.Error("Template error: %v\n%s", err, log.Stack(2)) + return err + } + return nil +} + func initHTMLRenderer() { rendererType := "static" if !setting.IsProd { @@ -115,9 +123,7 @@ func initHTMLRenderer() { if !setting.IsProd { go AssetFS().WatchLocalChanges(graceful.GetManager().ShutdownContext(), func() { - if err := htmlRender.CompileTemplates(); err != nil { - log.Error("Template error: %v\n%s", err, log.Stack(2)) - } + _ = ReloadHTMLTemplates() }) } } |