aboutsummaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorXe Iaso <me@xeiaso.net>2023-11-03 12:53:29 -0400
committerXe Iaso <me@xeiaso.net>2023-11-03 12:54:28 -0400
commite82f05d9ed6c66479ddd29d399618d9fc72882e4 (patch)
treee39e2f0a1db6048a41043719765aa50b84bc4482 /cmd
parentedbc8f1e5ca218092bb60b6f5febee20f8148ec9 (diff)
downloadxesite-e82f05d9ed6c66479ddd29d399618d9fc72882e4.tar.xz
xesite-e82f05d9ed6c66479ddd29d399618d9fc72882e4.zip
cmd/xesite: debounce rebuild events
Signed-off-by: Xe Iaso <me@xeiaso.net>
Diffstat (limited to 'cmd')
-rw-r--r--cmd/xesite/devel.go16
1 files changed, 12 insertions, 4 deletions
diff --git a/cmd/xesite/devel.go b/cmd/xesite/devel.go
index 944af30..23f35ff 100644
--- a/cmd/xesite/devel.go
+++ b/cmd/xesite/devel.go
@@ -7,7 +7,9 @@ import (
"os"
"path/filepath"
"strings"
+ "time"
+ "github.com/bep/debounce"
"gopkg.in/fsnotify.v1"
"xeiaso.net/v4/internal/lume"
)
@@ -55,6 +57,15 @@ func rebuildOnChange(fs *lume.FS) {
}
defer watcher.Close()
+ reload := func() {
+ slog.Info("reloading")
+ if err := fs.Update(context.Background()); err != nil {
+ slog.Error("reload failed", "err", err)
+ }
+ }
+
+ d := debounce.New(100 * time.Millisecond)
+
if err = watcher.Add("./lume"); err != nil {
log.Fatal(err)
}
@@ -84,10 +95,7 @@ func rebuildOnChange(fs *lume.FS) {
slog.Debug("got event", "fname", event.Name, "op", event.Op.String())
- slog.Info("reloading")
- if err := fs.Update(context.Background()); err != nil {
- slog.Error("reload failed", "err", err)
- }
+ d(reload)
case err := <-watcher.Errors:
log.Fatal(err)
}