From 208bb4e42fdcf3335b454d6f8bc7b19c4c3292b3 Mon Sep 17 00:00:00 2001 From: Arun Isaac Date: Tue, 25 Jul 2023 20:43:08 +0100 Subject: klaus: Add helper function to create klaus gunicorn app. * guix/forge/klaus.scm: Import (forge gunicorn) and (gnu system file-systems). (klaus-gunicorn-app): New public function. * doc/forge.skb (Introduction): Advertise klaus support. (Reference): Document klaus-gunicorn-app. --- guix/forge/klaus.scm | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'guix/forge') diff --git a/guix/forge/klaus.scm b/guix/forge/klaus.scm index ba963ee..54b374f 100644 --- a/guix/forge/klaus.scm +++ b/guix/forge/klaus.scm @@ -18,19 +18,22 @@ ;;; . (define-module (forge klaus) + #:use-module (forge gunicorn) #:use-module ((gnu packages check) #:select (python-nose python-pytest)) #:use-module ((gnu packages python-web) #:select (python-flask python-werkzeug)) #:use-module ((gnu packages python-xyz) #:select (python-dulwich python-humanize python-pygments)) #:use-module ((gnu packages version-control) #:select (git-minimal)) + #:use-module (gnu system file-systems) #:use-module (guix build-system pyproject) #:use-module (guix build-system python) #:use-module (guix download) #:use-module (guix gexp) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) - #:use-module (guix utils)) + #:use-module (guix utils) + #:export (klaus-gunicorn-app)) (define-public python-httpauth (package @@ -117,3 +120,27 @@ routes using HTTP Digest Authentication.") @item Code navigation using Exuberant ctags @end itemize") (license license:isc))) + +(define* (klaus-gunicorn-app repository-directory sockets + #:key site-name) + "Return a @code{} object to deploy klaus on +@var{sockets}, a list of @code{} or +@code{} objects. + +@var{repository-directory} is the path to the directory containing git +repositories to serve. + +@var{site-name} is the name of the klaus site to be displayed in the +banner." + (gunicorn-app + (name "klaus") + (package python-klaus) + (wsgi-app-module "klaus.contrib.wsgi_autoreload") + (sockets sockets) + (environment-variables `(("KLAUS_REPOS_ROOT" . ,repository-directory) + ,@(if site-name + `(("KLAUS_SITE_NAME" . ,site-name)) + '()))) + (mappings (list (file-system-mapping + (source repository-directory) + (target source)))))) -- cgit v1.2.3