about summary refs log tree commit diff
path: root/bin
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2026-03-16 02:58:47 -0500
committerFrederick Muriuki Muriithi2026-03-16 02:58:47 -0500
commitc31dcecf5c1837dd6cd3689716b90121be0b9fbe (patch)
treeacdf12cbbadbc0d4fded3215dd7152c0e5bcbea8 /bin
parentd19fcd79a028e649cb8ab3e42f5796bc353309ed (diff)
downloadgn-guile-c31dcecf5c1837dd6cd3689716b90121be0b9fbe.tar.gz
Add runnable bin/gn-guile script to start the webserver
* README.md: Update the documentation on how to run the webserver.
* bin/gn-guile: New runnable script to start webserver.
* web/webserver.scm: Make into Guile/Scheme module and remove
  entry-point `main' function.
Diffstat (limited to 'bin')
-rwxr-xr-xbin/gn-guile38
1 files changed, 38 insertions, 0 deletions
diff --git a/bin/gn-guile b/bin/gn-guile
new file mode 100755
index 0000000..47bd259
--- /dev/null
+++ b/bin/gn-guile
@@ -0,0 +1,38 @@
+#!/usr/bin/env sh
+# -*- mode: scheme; -*-
+exec guile --no-auto-compile -e main -s "$0" "$@"
+!#
+
+;;; gn-guile --- GN Guile web service
+;;; Copyright © 2026 Frederick M. Muriithi <fredmanglis@gmail.com>
+;;;
+;;; This file is part of gn-guile
+;;;
+;;; gn-guile is free software: you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation, either version 3 of the License, or
+;;; (at your option) any later version.
+;;;
+;;; gn-guile is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;;; General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with gn-guile.  If not, see <https://www.gnu.org/licenses/>.
+
+(use-modules (config)
+             (web config)
+             (web gn-uri)
+             (web webserver))
+
+(define (main args)
+  (write (string-append "Starting Guile REST API " get-version " server!"))
+  (write args)
+  (newline)
+  (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 (cli-options->gn-guile-config options))))