|
|
@ -13,7 +13,7 @@ import (
|
|
|
|
type TemplateSet struct {
|
|
|
|
type TemplateSet struct {
|
|
|
|
templates *template.Template
|
|
|
|
templates *template.Template
|
|
|
|
paths []string
|
|
|
|
paths []string
|
|
|
|
modTimes map[string]time.Time
|
|
|
|
loadTimes map[string]time.Time
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func newTemplateSet(partials *TemplateSet, paths ...string) TemplateSet {
|
|
|
|
func newTemplateSet(partials *TemplateSet, paths ...string) TemplateSet {
|
|
|
@ -33,7 +33,7 @@ func newTemplateSet(partials *TemplateSet, paths ...string) TemplateSet {
|
|
|
|
return TemplateSet{
|
|
|
|
return TemplateSet{
|
|
|
|
templates: templates,
|
|
|
|
templates: templates,
|
|
|
|
paths: allPaths,
|
|
|
|
paths: allPaths,
|
|
|
|
modTimes: modTimes,
|
|
|
|
loadTimes: modTimes,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -49,19 +49,21 @@ func (templateSet *TemplateSet) ExecuteTemplate(wr io.Writer, name string, data
|
|
|
|
return templateSet.templates.ExecuteTemplate(wr, name, data)
|
|
|
|
return templateSet.templates.ExecuteTemplate(wr, name, data)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (templateSet *TemplateSet) reloadTemplateIfModified(path string) {
|
|
|
|
func (templateSet *TemplateSet) reloadTemplatesIfModified() {
|
|
|
|
|
|
|
|
for path, loadTime := range templateSet.loadTimes {
|
|
|
|
fileInfo, _ := os.Stat(path)
|
|
|
|
fileInfo, _ := os.Stat(path)
|
|
|
|
modTime := fileInfo.ModTime()
|
|
|
|
modTime := fileInfo.ModTime()
|
|
|
|
if modTime.After(templateSet.modTimes[path]) {
|
|
|
|
if modTime.After(loadTime) {
|
|
|
|
fmt.Printf("Reloading template %s...\n", path)
|
|
|
|
fmt.Printf("%s updated: reloading templates...\n", path)
|
|
|
|
templateSet.templates.ParseFiles(path)
|
|
|
|
goto update
|
|
|
|
templateSet.modTimes[path] = modTime
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return
|
|
|
|
func (templateSet *TemplateSet) reloadTemplatesIfModified() {
|
|
|
|
update:
|
|
|
|
|
|
|
|
now := time.Now()
|
|
|
|
for _, path := range templateSet.paths {
|
|
|
|
for _, path := range templateSet.paths {
|
|
|
|
templateSet.reloadTemplateIfModified(path)
|
|
|
|
templateSet.templates.ParseFiles(path)
|
|
|
|
|
|
|
|
templateSet.loadTimes[path] = now
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|