diff options
Diffstat (limited to 'web/webserver.scm')
| -rw-r--r-- | web/webserver.scm | 42 |
1 files changed, 41 insertions, 1 deletions
diff --git a/web/webserver.scm b/web/webserver.scm index 4041f50..70459a0 100644 --- a/web/webserver.scm +++ b/web/webserver.scm @@ -12,6 +12,9 @@ (srfi srfi-26) (rnrs io ports) (rnrs bytevectors) + (config) + (config api) + (config parser sexp) (web http) (web client) (web request) @@ -393,10 +396,47 @@ otherwise search for set/group data" (list #:addr (inet-pton AF_INET address) #:port port))) +(define string->exact (compose inexact->exact string->number)) + +(define (user-port? parsed) + ;; (let ((parsed (string->exact val)))) + (and (positive? parsed) (>= parsed 1024) (<= parsed 49151))) + + +(define (parse-cli-options cmd-line) + (let ((config (configuration (name 'gn-guile) + (synopsis "gn-guile web service: provide services + to main Genenetwork service.") + (description "gn-guile web service is a small +service, written in GNU Guile, that provides some functionality to the main +Genenetwork service in the background. This is not meant for direct user +interaction.") + (keywords (list + (switch (name 'write) + (default #f) + (test boolean?) + (character #f)) + (setting (name 'port) + (default 8091) + (test user-port?) + (handler string->exact)) + (setting (name 'remote-url) + (default "git@git.genenetwork.org:/home/git/public/gn-docs") + (test string?)) + (setting (name 'local-repo-path) + (default (string-append (dirname (getcwd)) "/gn-guile-files/gn-docs")) + (test file-exists?)))) + (parser sexp-parser) + (directory (list (in-cwd ".instance/")))))) + (getopt-config-auto cmd-line config))) + (define (main args) (write (string-append "Starting Guile REST API " get-version " server!")) (write args) (newline) - (let ((listen (inexact->exact (string->number (car (cdr args)))))) + (let* ((options (parse-cli-options args)) + (listen (option-ref options 'port))) + (when (option-ref options 'write) + (options-write options)) (display `("listening on" ,listen)) (start-web-server "127.0.0.1" listen))) |
