Skip to content

Commit 3849b33

Browse files
committed
Add --test flag to test for errors without actually reloading
1 parent 7a05091 commit 3849b33

File tree

4 files changed

+20
-10
lines changed

4 files changed

+20
-10
lines changed

cmd/manager.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ var (
5454
cli.BoolFlag{
5555
Name: "debug",
5656
},
57+
cli.BoolFlag{
58+
Name: "test",
59+
Usage: "Test templates for errors without actually reloading",
60+
},
5761
},
5862
Action: runReloadTemplates,
5963
}
@@ -131,7 +135,7 @@ func runReloadTemplates(c *cli.Context) error {
131135
defer cancel()
132136

133137
setup(ctx, c.Bool("debug"))
134-
extra := private.ReloadTemplates(ctx)
138+
extra := private.ReloadTemplates(ctx, c.Bool("test"))
135139
return handleCliResponseExtra(extra)
136140
}
137141

modules/private/manager.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ func Restart(ctx context.Context) ResponseExtra {
3030
}
3131

3232
// ReloadTemplates calls the internal reload-templates function
33-
func ReloadTemplates(ctx context.Context) ResponseExtra {
34-
reqURL := setting.LocalURL + "api/internal/manager/reload-templates"
33+
func ReloadTemplates(ctx context.Context, test bool) ResponseExtra {
34+
reqURL := setting.LocalURL + fmt.Sprintf("api/internal/manager/reload-templates?test=%t", test)
3535
req := newInternalRequest(ctx, reqURL, "POST")
3636
return requestJSONUserMsg(req, "Reloaded")
3737
}

modules/templates/htmlrenderer.go

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ func (h *HTMLRender) TemplateLookup(name string) (TemplateExecutor, error) {
6262
return tmpls.Executor(name, NewFuncMap())
6363
}
6464

65-
func (h *HTMLRender) CompileTemplates() error {
65+
func (h *HTMLRender) CompileTemplates(test bool) error {
6666
assets := AssetFS()
6767
extSuffix := ".tmpl"
6868
tmpls := scopedtmpl.NewScopedTemplate()
@@ -85,6 +85,9 @@ func (h *HTMLRender) CompileTemplates() error {
8585
return err
8686
}
8787
}
88+
if test {
89+
return nil
90+
}
8891
tmpls.Freeze()
8992
h.templates.Store(tmpls)
9093
return nil
@@ -96,9 +99,11 @@ func HTMLRenderer() *HTMLRender {
9699
return htmlRender
97100
}
98101

99-
func ReloadHTMLTemplates() error {
100-
if err := htmlRender.CompileTemplates(); err != nil {
101-
log.Error("Template error: %v\n%s", err, log.Stack(2))
102+
func ReloadHTMLTemplates(test bool) error {
103+
if err := htmlRender.CompileTemplates(test); err != nil {
104+
if !test {
105+
log.Error("Template error: %v\n%s", err, log.Stack(2))
106+
}
102107
return err
103108
}
104109
return nil
@@ -112,7 +117,7 @@ func initHTMLRenderer() {
112117
log.Debug("Creating %s HTML Renderer", rendererType)
113118

114119
htmlRender = &HTMLRender{}
115-
if err := htmlRender.CompileTemplates(); err != nil {
120+
if err := htmlRender.CompileTemplates(false); err != nil {
116121
p := &templateErrorPrettier{assets: AssetFS()}
117122
wrapFatal(p.handleFuncNotDefinedError(err))
118123
wrapFatal(p.handleUnexpectedOperandError(err))
@@ -123,7 +128,7 @@ func initHTMLRenderer() {
123128

124129
if !setting.IsProd {
125130
go AssetFS().WatchLocalChanges(graceful.GetManager().ShutdownContext(), func() {
126-
_ = ReloadHTMLTemplates()
131+
_ = ReloadHTMLTemplates(false)
127132
})
128133
}
129134
}

routers/private/manager.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ import (
2121

2222
// ReloadTemplates reloads all the templates
2323
func ReloadTemplates(ctx *context.PrivateContext) {
24-
err := templates.ReloadHTMLTemplates()
24+
test := ctx.FormBool("test")
25+
err := templates.ReloadHTMLTemplates(test)
2526
if err != nil {
2627
ctx.JSON(http.StatusInternalServerError, private.Response{
2728
UserMsg: fmt.Sprintf("Template error: %v", err),

0 commit comments

Comments
 (0)