This repository was archived by the owner on Apr 8, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserve
executable file
·56 lines (52 loc) · 1.64 KB
/
serve
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#! /usr/bin/env racket
#lang racket
; vim:ft=racket:
(require (prefix-in env: web-server/servlet-env)
(prefix-in log: web-server/dispatchers/dispatch-log)
(prefix-in res: web-server/configuration/responders))
(require (prefix-in app: "app.rkt"))
;; TODO SSL
;; TODO Consider app interface/implementation unit.
(module+ main
(let* ([program (path->string (find-system-path 'run-file))]
[log-file (string-append program ".log")]
[listen-addr "0.0.0.0"]
[listen-port 8000]
[paths-to-serve '()]
[dev? #f])
(command-line
#:program program
#:once-each
[("-d" "--dev")
"Development mode: open browser, show stack traces, etc."
(set! dev? #t)]
[("-a" "--addr")
ip-addr "Listen address."
(set! listen-addr ip-addr)]
[("-p" "--port")
port-number "Listen port."
(set! listen-port (string->number port-number))]
[("-l" "--log")
file "Log file."
(set! log-file file)]
#:args (path . paths)
(set! paths-to-serve (cons path paths)))
(env:serve/servlet
app:dispatch
#:listen-ip listen-addr
#:port listen-port
#:launch-browser? dev?
#:extra-files-paths paths-to-serve
#:file-not-found-responder app:handle-error-not-found
#:servlet-responder
(if dev?
res:servlet-error-responder
app:handle-error-crash)
#:servlet-loading-responder
(if dev?
res:servlet-loading-responder
app:handle-error-crash)
#:log-file log-file
#:log-format log:paren-format
#:servlet-path ""
#:servlet-regexp #rx"")))