aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2018-04-25 08:18:38 +0100
committerChristopher Baines <mail@cbaines.net>2018-05-18 10:42:58 +0100
commitdc7ee57b6864a80fc21574b36a10f8b8a7e36bb5 (patch)
tree6cd47a1c22f351c516cc91bd2a0d3fc59cccd459
parent963b68f7f6e6e9aff13ad7cf52ed0578e6493b86 (diff)
downloadguix-dc7ee57b6864a80fc21574b36a10f8b8a7e36bb5.tar
guix-dc7ee57b6864a80fc21574b36a10f8b8a7e36bb5.tar.gz
services: cgit: Make project-list permit a file-object.cgit-changes
Instead of having the service manage the list, it's useful to be able to point this at an existing file, for example, when using cgit together with gitolite. * gnu/services/cgit.scm (project-list?): New procedure. (serialize-project-list): Handle file-object values. (<cgit-configuration>): Change the predicate for project-list to allow lists and file-objects.
-rw-r--r--doc/guix.texi2
-rw-r--r--gnu/services/cgit.scm10
2 files changed, 9 insertions, 3 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index 005c0597ad..81ad4f48f1 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -19241,7 +19241,7 @@ Defaults to @samp{#f}.
@end deftypevr
-@deftypevr {@code{cgit-configuration} parameter} list project-list
+@deftypevr {@code{cgit-configuration} parameter} project-list project-list
A list of subdirectories inside of @code{repository-directory}, relative
to it, that should loaded as Git repositories. An empty list means that
all subdirectories will be loaded.
diff --git a/gnu/services/cgit.scm b/gnu/services/cgit.scm
index 3183535d4a..3289d37333 100644
--- a/gnu/services/cgit.scm
+++ b/gnu/services/cgit.scm
@@ -116,6 +116,10 @@
(define (serialize-file-object field-name val)
(serialize-string field-name val))
+(define (project-list? val)
+ (or (list? val)
+ (file-object? val)))
+
;;;
;;; Serialize <nginx-server-configuration>
@@ -168,7 +172,9 @@
(if (null? val) ""
(serialize-field
'project-list
- (plain-file "project-list" (string-join val "\n")))))
+ (if (file-object? val)
+ val
+ (plain-file "project-list" (string-join val "\n"))))))
(define (serialize-extra-options extra-options)
(string-join extra-options "\n" 'suffix))
@@ -547,7 +553,7 @@ disabled.")
"Flag which, when set to @samp{#t}, will make cgit omit the standard
header on all pages.")
(project-list
- (list '())
+ (project-list '())
"A list of subdirectories inside of @code{repository-directory}, relative
to it, that should loaded as Git repositories. An empty list means that all
subdirectories will be loaded.")