syndicate-2017/examples/webchat/server/script-compiler.rkt

26 lines
1.1 KiB
Racket

#lang syndicate
(require racket/file)
(require racket/port)
(require racket/system)
(require/activate syndicate/reload)
(require/activate syndicate/drivers/filesystem)
(require/activate syndicate/drivers/web)
(spawn #:name 'script-compiler
(stop-when-reloaded)
(define source-filename "../htdocs/webchat.syndicate.js")
(define target-filename "webchat.js")
(during/spawn (file-content source-filename file->bytes $bs)
#:name (list 'compiled source-filename)
(define compiled (with-output-to-bytes
(lambda () (system* "../../../js/bin/syndicatec" source-filename))))
(log-info "Finished compiling ~s" target-filename)
(on (web-request-get (id req) _ (,target-filename ()))
(web-respond/bytes! id
#:header (web-response-header
#:headers (list (cons 'content-type
"application/javascript")))
compiled))))