scripts: Allow the REPL to listen on Unix domain sockets.
authorArun Isaac <arunisaac@systemreboot.net>
Sun, 2 Jan 2022 19:43:25 +0000 (01:13 +0530)
committerRicardo Wurmus <rekado@elephly.net>
Fri, 7 Jan 2022 15:42:23 +0000 (16:42 +0100)
* scripts/mumi.in (%options): Do not error out on non-numeric
listen-repl arguments.
Spawn REPL server on a TCP socket if listen-repl is numeric, else
spawn REPL server on a Unix domain socket.

scripts/mumi.in

index 9c997a24147cbd7cc380ee22d969a4eb8a8974f3..755dfb3acbb0a16ac79494af80caa00dd0584c02 100644 (file)
                         (error "invalid web server port" arg)))))
         (option '("listen-repl") #f #t
                 (lambda (opt name arg result)
                         (error "invalid web server port" arg)))))
         (option '("listen-repl") #f #t
                 (lambda (opt name arg result)
-                  (let ((port (cond (arg => string->number)
-                                    (else %default-repl-server-port))))
-                    (if port
-                        (alist-cons 'listen-repl port
-                                    (alist-delete 'listen-repl result))
-                        (error "invalid REPL server port" arg)))))
+                  (alist-cons 'listen-repl (or (string->number arg) arg)
+                              (alist-delete 'listen-repl result))))
         (option '("disable-mailer") #f #f
                 (lambda (opt name arg result)
                   (alist-cons 'disable-mailer #t result)))
         (option '("disable-mailer") #f #f
                 (lambda (opt name arg result)
                   (alist-cons 'disable-mailer #t result)))
   (("web" . rest)
    (let ((opts (parse-options rest)))
      (parameterize ((mailer-enabled? (not (assoc-ref opts 'disable-mailer))))
   (("web" . rest)
    (let ((opts (parse-options rest)))
      (parameterize ((mailer-enabled? (not (assoc-ref opts 'disable-mailer))))
-       (let ((repl-port (assoc-ref opts 'listen-repl)))
-         (when repl-port
-           (format (current-error-port)
-                   "REPL server listening on port ~a~%"
-                   repl-port)
-           (spawn-server (make-tcp-server-socket #:port repl-port))))
+       (let ((listen-repl (assoc-ref opts 'listen-repl)))
+         (when listen-repl
+           (cond
+            ((number? listen-repl)
+             (format (current-error-port)
+                     "REPL server listening on port ~a~%"
+                     listen-repl)
+             (spawn-server (make-tcp-server-socket #:port listen-repl)))
+            (else
+             (format (current-error-port)
+                     "REPL server listening on ~a~%"
+                     listen-repl)
+             (spawn-server (make-unix-domain-server-socket #:path listen-repl))))))
        (start-mumi-web-server (or (assoc-ref opts 'address)
                                   "0.0.0.0")
                               (or (assoc-ref opts 'port)
        (start-mumi-web-server (or (assoc-ref opts 'address)
                                   "0.0.0.0")
                               (or (assoc-ref opts 'port)