fix startup race/fencepost in watch-ssh-keys

if it starts _after_ the outputs are populated, it should
write the first lot of outputs without waiting for a change
This commit is contained in:
Daniel Barlow 2024-09-04 21:19:51 +01:00
parent 091d863710
commit 146a2d9ac0
1 changed files with 2 additions and 2 deletions

View File

@ -11,6 +11,7 @@
(fn write-changes [path old-tree new-tree]
(when (not (table= old-tree new-tree))
(io.stderr:write "new ssh keys\n")
(each [username pubkeys (pairs new-tree)]
(with-open [f (assert (io.open (.. path "/" username) :w))]
;; the keys are "1" "2" "3" etc, so pairs not ipairs
@ -47,12 +48,11 @@
(os.remove out-dir)
))
(fn run []
(let [{: out-path : watched-service : path } (parse-args arg)
dir (.. watched-service "/.outputs")
service (assert (svc.open dir))]
(accumulate [tree (or (service:output path) {})
(accumulate [tree {}
v (service:events)]
(write-changes out-path tree (or (service:output path) {})))))