services: cgit: Make project-list permit a file-object.

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.
This commit is contained in:
Christopher Baines 2018-04-25 08:18:38 +01:00
parent c3343d62f6
commit 6ee3f3dec7
No known key found for this signature in database
GPG key ID: 5E28A33B0B84F577
2 changed files with 9 additions and 3 deletions

View file

@ -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.

View file

@ -116,6 +116,10 @@ (define (file-object? val)
(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 @@ (define (serialize-project-list _ val)
(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 @@ (define-configuration cgit-configuration
"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.")