move template parsing out of func init
If we manage to build with a malformed template now, the watchdog will work. fixes #60
This commit is contained in:
parent
1ec8cbf7d9
commit
c306d3cd69
93
status.go
93
status.go
@ -46,55 +46,6 @@ func parseMeminfo() map[string]int64 {
|
|||||||
return vals
|
return vals
|
||||||
}
|
}
|
||||||
|
|
||||||
var commonTmpls = mustParseCommonTmpls()
|
|
||||||
|
|
||||||
func mustParseCommonTmpls() *template.Template {
|
|
||||||
t := template.New("root")
|
|
||||||
t = template.Must(t.New("header").Parse(bundled.Asset("header.tmpl")))
|
|
||||||
t = template.Must(t.New("footer").Parse(bundled.Asset("footer.tmpl")))
|
|
||||||
return t
|
|
||||||
}
|
|
||||||
|
|
||||||
var overviewTmpl = template.Must(template.Must(commonTmpls.Clone()).New("overview").
|
|
||||||
Funcs(map[string]interface{}{
|
|
||||||
"restarting": func(t time.Time) bool {
|
|
||||||
return time.Since(t).Seconds() < 5
|
|
||||||
},
|
|
||||||
|
|
||||||
"last": func(stdout, stderr []string) string {
|
|
||||||
if len(stdout) == 0 && len(stderr) == 0 {
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
both := append(stdout, stderr...)
|
|
||||||
sort.Strings(both)
|
|
||||||
return both[len(both)-1]
|
|
||||||
},
|
|
||||||
|
|
||||||
"megabytes": func(val int64) string {
|
|
||||||
return fmt.Sprintf("%.1f MiB", float64(val)/1024/1024)
|
|
||||||
},
|
|
||||||
|
|
||||||
"gigabytes": func(val int64) string {
|
|
||||||
return fmt.Sprintf("%.1f GiB", float64(val)/1024/1024/1024)
|
|
||||||
},
|
|
||||||
|
|
||||||
"baseName": func(path string) string {
|
|
||||||
return filepath.Base(path)
|
|
||||||
},
|
|
||||||
|
|
||||||
"initRss": func() int64 {
|
|
||||||
return rssOfPid(1)
|
|
||||||
},
|
|
||||||
|
|
||||||
"rssPercentage": func(meminfo map[string]int64, rss int64) string {
|
|
||||||
used := float64(meminfo["MemTotal"] - meminfo["MemAvailable"])
|
|
||||||
return fmt.Sprintf("%.f", float64(rss)/used*100)
|
|
||||||
},
|
|
||||||
}).
|
|
||||||
Parse(bundled.Asset("overview.tmpl")))
|
|
||||||
|
|
||||||
var statusTmpl = template.Must(template.Must(commonTmpls.Clone()).New("statusTmpl").Parse(bundled.Asset("status.tmpl")))
|
|
||||||
|
|
||||||
// mustReadFile0 returns the file contents or an empty string if the file could
|
// mustReadFile0 returns the file contents or an empty string if the file could
|
||||||
// not be read. All trailing \0 bytes are stripped (as found in
|
// not be read. All trailing \0 bytes are stripped (as found in
|
||||||
// /proc/device-tree/model).
|
// /proc/device-tree/model).
|
||||||
@ -144,6 +95,50 @@ func readModuleInfo(path string) (string, error) {
|
|||||||
func initStatus(services []*service) {
|
func initStatus(services []*service) {
|
||||||
model := model()
|
model := model()
|
||||||
|
|
||||||
|
commonTmpls := template.New("root")
|
||||||
|
commonTmpls = template.Must(commonTmpls.New("header").Parse(bundled.Asset("header.tmpl")))
|
||||||
|
commonTmpls = template.Must(commonTmpls.New("footer").Parse(bundled.Asset("footer.tmpl")))
|
||||||
|
|
||||||
|
overviewTmpl := template.Must(template.Must(commonTmpls.Clone()).New("overview").
|
||||||
|
Funcs(map[string]interface{}{
|
||||||
|
"restarting": func(t time.Time) bool {
|
||||||
|
return time.Since(t).Seconds() < 5
|
||||||
|
},
|
||||||
|
|
||||||
|
"last": func(stdout, stderr []string) string {
|
||||||
|
if len(stdout) == 0 && len(stderr) == 0 {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
both := append(stdout, stderr...)
|
||||||
|
sort.Strings(both)
|
||||||
|
return both[len(both)-1]
|
||||||
|
},
|
||||||
|
|
||||||
|
"megabytes": func(val int64) string {
|
||||||
|
return fmt.Sprintf("%.1f MiB", float64(val)/1024/1024)
|
||||||
|
},
|
||||||
|
|
||||||
|
"gigabytes": func(val int64) string {
|
||||||
|
return fmt.Sprintf("%.1f GiB", float64(val)/1024/1024/1024)
|
||||||
|
},
|
||||||
|
|
||||||
|
"baseName": func(path string) string {
|
||||||
|
return filepath.Base(path)
|
||||||
|
},
|
||||||
|
|
||||||
|
"initRss": func() int64 {
|
||||||
|
return rssOfPid(1)
|
||||||
|
},
|
||||||
|
|
||||||
|
"rssPercentage": func(meminfo map[string]int64, rss int64) string {
|
||||||
|
used := float64(meminfo["MemTotal"] - meminfo["MemAvailable"])
|
||||||
|
return fmt.Sprintf("%.f", float64(rss)/used*100)
|
||||||
|
},
|
||||||
|
}).
|
||||||
|
Parse(bundled.Asset("overview.tmpl")))
|
||||||
|
|
||||||
|
statusTmpl := template.Must(template.Must(commonTmpls.Clone()).New("statusTmpl").Parse(bundled.Asset("status.tmpl")))
|
||||||
|
|
||||||
for _, fn := range []string{
|
for _, fn := range []string{
|
||||||
"favicon.ico",
|
"favicon.ico",
|
||||||
"bootstrap-3.3.7.min.css",
|
"bootstrap-3.3.7.min.css",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user