2024-08-08 14:35:11 +00:00
|
|
|
(local json (require :json))
|
|
|
|
(local http (require :fetch))
|
|
|
|
(local svc (require :anoia.svc))
|
|
|
|
(local { : utime } (require :lualinux))
|
|
|
|
|
|
|
|
(fn download [url dest]
|
|
|
|
(match (http.fetch url)
|
|
|
|
(nil code str)
|
|
|
|
(assert nil (.. "error " code ": " str))
|
|
|
|
|
|
|
|
(body { : last-modified })
|
2024-08-14 21:39:41 +00:00
|
|
|
(let [service (svc.open dest)
|
|
|
|
lock (.. dest "/.lock")
|
|
|
|
state (.. dest "/state")]
|
|
|
|
(with-open [fout (io.open lock :w)] (fout:write ""))
|
2024-08-08 14:35:11 +00:00
|
|
|
(service:output "." (json.decode body))
|
2024-08-14 21:39:41 +00:00
|
|
|
(with-open [fout (io.open state :w)] (fout:write "ok"))
|
|
|
|
(os.remove lock)
|
2024-08-08 14:35:11 +00:00
|
|
|
(utime dest last-modified))))
|
|
|
|
|
|
|
|
(fn run [] (download (. arg 1) (. arg 2)))
|
|
|
|
|
|
|
|
|
|
|
|
{ : run }
|