diff options
| author | Bernhard Guillon <Bernhard.Guillon@begu.org> | 2026-07-06 21:26:29 +0200 |
|---|---|---|
| committer | Bernhard Guillon <Bernhard.Guillon@begu.org> | 2026-07-06 21:26:29 +0200 |
| commit | 8b22a36d1c068f9baee68799b0c1f51ecb999e9d (patch) | |
| tree | f460fd80e8c1578db2bd365b52caf1734d473b73 /main.go | |
| parent | 7512c95fa3f4b4e4ccdf452024f314a9a3c3b60f (diff) | |
| download | sourcewatch-8b22a36d1c068f9baee68799b0c1f51ecb999e9d.tar.gz sourcewatch-8b22a36d1c068f9baee68799b0c1f51ecb999e9d.zip | |
Add watcher tests, refactor watch() to accept context
- Added watcher_test.go: 10 tests covering create, write, remove,
rename, ignored files, debouncing, directory creation/removal,
and manifest updates
- Refactored watch() to accept context.Context for clean cancellation
- Added signal handling (SIGINT/SIGTERM) for graceful shutdown in main.go
- Fixed test expectations (version two = 11 bytes, not 10)
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 9 |
1 files changed, 8 insertions, 1 deletions
@@ -1,8 +1,12 @@ package main import ( + "context" "flag" "log" + "os" + "os/signal" + "syscall" ) var ( @@ -31,7 +35,10 @@ func main() { log.Fatalf("initial sync failed: %v", err) } - if err := watch(*hostDir, *dataDir, manifest, rules, *dryRun, *verbose); err != nil { + ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM) + defer cancel() + + if err := watch(ctx, *hostDir, *dataDir, manifest, rules, *dryRun, *verbose); err != nil { log.Fatalf("watcher failed: %v", err) } } |
