diff options
author | Clément Lassieur <clement@lassieur.org> | 2018-03-20 21:15:05 +0100 |
---|---|---|
committer | Clément Lassieur <clement@lassieur.org> | 2018-04-11 21:23:59 +0200 |
commit | e5fe544eaac4d478a09a9e22ffa460602f770910 (patch) | |
tree | d319f1d15e21f30bb2c017cc64012ca0070d8c5e | |
parent | 80b76b93506cadc967164cb07093f86bafb5aa77 (diff) |
services: cgit: Add support for project-list.
* doc/guix.texi (Version Control Services): Update accordingly.
* gnu/services/cgit.scm (cgit-configuration)[project-list]: New field.
(serialize-project-list): New procedure that uses PLAIN-FILE to generate a
file from the string list given by the user as input.
(serialize-cgit-configuration): Make sure to serialize 'project-list' before
'repostory-directory'.
-rw-r--r-- | doc/guix.texi | 9 | ||||
-rw-r--r-- | gnu/services/cgit.scm | 28 |
2 files changed, 29 insertions, 8 deletions
diff --git a/doc/guix.texi b/doc/guix.texi index 1e9601ca11..1bf9685542 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -19017,6 +19017,15 @@ Defaults to @samp{#f}. @end deftypevr +@deftypevr {@code{cgit-configuration} parameter} 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. + +Defaults to @samp{()}. + +@end deftypevr + @deftypevr {@code{cgit-configuration} parameter} file-object readme Text which will be used as default value for @code{cgit-repo-readme}. diff --git a/gnu/services/cgit.scm b/gnu/services/cgit.scm index 73d459ccf5..8ef12cd5a0 100644 --- a/gnu/services/cgit.scm +++ b/gnu/services/cgit.scm @@ -163,6 +163,12 @@ ((path text) (format #f "repo.module-link.~a=~a\n" path text))))) +(define (serialize-project-list _ val) + (if (null? val) "" + (serialize-field + 'project-list + (plain-file "project-list" (string-join val "\n"))))) + (define repository-directory? string?) (define (serialize-repository-directory _ val) @@ -536,13 +542,11 @@ disabled.") (boolean #f) "Flag which, when set to @samp{#t}, will make cgit omit the standard header on all pages.") - ;; TODO: cgit expects a file name - ;; that should be created from a list of strings provided by the user. - ;; - ;; (project-list - ;; (string "") - ;; "A list of subdirectories inside of @code{repository-directory}, - ;; relative to it, that should loaded as Git repositories.") + (project-list + (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.") (readme (file-object "") "Text which will be used as default value for @code{cgit-repo-readme}.") @@ -636,10 +640,18 @@ for cgit to allow access to that repository.") (define (serialize-cgit-configuration config) (define (rest? field) (not (memq (configuration-field-name field) - '(repositories)))) + '(project-list + repository-directory + repositories)))) #~(string-append #$(let ((rest (filter rest? cgit-configuration-fields))) (serialize-configuration config rest)) + #$(serialize-project-list + 'project-list + (cgit-configuration-project-list config)) + #$(serialize-repository-directory + 'repository-directory + (cgit-configuration-repository-directory config)) #$(serialize-repository-cgit-configuration-list 'repositories (cgit-configuration-repositories config)))) |