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