bikeshed watch script

This commit is contained in:
xenia 2022-12-01 01:02:24 -05:00
parent e2fee2f19a
commit 0b5ff3eab5
1 changed files with 18 additions and 16 deletions

View File

@ -12,24 +12,26 @@
(define (watch-forever file)
(sleep 0.2)
(define chg-evt (filesystem-change-evt file (lambda ()
(displayln "error watching file...")
(sleep 1) (watch-forever file))))
(define runner (thread (lambda () (reinvoke file))))
(match (filesystem-change-evt file (λ () #f))
[#f
(displayln "error watching file...")
(sleep 1)]
[chg-evt
(define runner (thread (lambda () (reinvoke file))))
(define (handle-break _)
(cond
[(sync/timeout 0 runner)
(displayln "exiting")
(exit)]
[else
(displayln "killing module")
(kill-thread runner)
(filesystem-change-evt-cancel chg-evt)]))
(define (handle-break _)
(cond
[(sync/timeout 0 runner)
(displayln "exiting")
(exit)]
[else
(displayln "killing module")
(kill-thread runner)
(filesystem-change-evt-cancel chg-evt)]))
(with-handlers ([exn:break? handle-break])
(sync chg-evt)
(kill-thread runner))
(with-handlers ([exn:break? handle-break])
(sync chg-evt)
(kill-thread runner))])
(watch-forever file))
(define-runtime-path aoc "aoc.rkt")