build: re-enable asset reloading in dev
Alan Pearce alan@alanpearce.eu
Fri, 31 May 2024 03:10:46 +0200
2 files changed, 20 insertions(+), 5 deletions(-)
M frontend/assets.go → frontend/assets.go
@@ -10,7 +10,7 @@ "github.com/pkg/errors" ) -var Assets = AssetCollection{ +var Assets = &AssetCollection{ Scripts: make(map[string]Asset), Stylesheets: make(map[string]Asset), } @@ -83,12 +83,21 @@ return nil } -func init() { - err := hashScripts() +func Rehash() (err error) { + err = hashScripts() if err != nil { - panic(err) + return err } err = hashStyles() + if err != nil { + return err + } + + return nil +} + +func init() { + err := Rehash() if err != nil { panic(err) }
M internal/server/mux.go → internal/server/mux.go
@@ -43,7 +43,7 @@ SourceResult *bleve.SearchResult ExtraHeadHTML template.HTML Code int Message string - Assets frontend.AssetCollection + Assets *frontend.AssetCollection } type ResultData struct { @@ -282,6 +282,12 @@ return nil, errors.WithMessage(err, "could not add directory to file watcher") } go fw.Start(func(filename string) { slog.Debug(fmt.Sprintf("got filename %s", filename)) + if match, _ := path.Match("frontend/static/*", filename); match { + err := frontend.Rehash() + if err != nil { + slog.Error("failed to re-hash frontend assets", "error", err) + } + } if path.Ext(filename) == ".gotmpl" { templates, err = loadTemplates() if err != nil {