From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Huang\, Ying" Subject: Re: [PATCH Resend] services: dict.scm: Support more dicod configuration Date: Wed, 08 Mar 2017 19:12:25 +0800 Message-ID: <87pohsm38m.fsf@163.com> References: <20170307114702.7126-1-huang.ying.caritas@gmail.com> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:42344) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clZWL-0000mz-Qu for guix-devel@gnu.org; Wed, 08 Mar 2017 06:12:43 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1clZWG-0008V1-Pl for guix-devel@gnu.org; Wed, 08 Mar 2017 06:12:41 -0500 Received: from m12-12.163.com ([220.181.12.12]:55832) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1clZWF-0008Tp-8k for guix-devel@gnu.org; Wed, 08 Mar 2017 06:12:36 -0500 In-Reply-To: <20170307114702.7126-1-huang.ying.caritas@gmail.com> (Huang Ying's message of "Tue, 7 Mar 2017 19:47:02 +0800") List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: Huang Ying Cc: guix-devel@gnu.org Hi, Can anyone help me to review this patch? Best Regards, Huang, Ying Huang Ying writes: > * gnu/services/dict.scm (): Rename databases > to items to reflect more general configuration. > (): Add new record type to describe handler (module). > (): Add more fields. > (dicod-configuration-file): Support convert more configuration items > to config file. > --- > gnu/services/dict.scm | 50 ++++++++++++++++++++++++++++++++++++++++---------- > 1 file changed, 40 insertions(+), 10 deletions(-) > > diff --git a/gnu/services/dict.scm b/gnu/services/dict.scm > index 303067037..628ec9757 100644 > --- a/gnu/services/dict.scm > +++ b/gnu/services/dict.scm > @@ -32,6 +32,7 @@ > #:export (dicod-service > dicod-service-type > dicod-configuration > + dicod-handler > dicod-database > %dicod-database:gcide)) > > @@ -46,21 +47,29 @@ > (dico dicod-configuration-dico (default dico)) > (interfaces dicod-configuration-interfaces ;list of strings > (default '("localhost"))) > - (databases dicod-configuration-databases > - ;; list of > + (items dicod-configuration-items > + ;; list of or > (default (list %dicod-database:gcide)))) > > +(define-record-type* > + dicod-handler make-dicod-handler > + dicod-handler? > + (name dicod-handler-name) > + (module dicod-handler-module (default #f)) > + (options dicod-handler-options (default '()))) > + > (define-record-type* > dicod-database make-dicod-database > dicod-database? > (name dicod-database-name) > - (module dicod-database-module) > + (handler dicod-database-handler) > + (complex dicod-database-complex (default #f)) > (options dicod-database-options (default '()))) > > (define %dicod-database:gcide > (dicod-database > (name "gcide") > - (module "gcide") > + (handler "gcide") > (options (list #~(string-append "dbdir=" #$gcide "/share/gcide") > "idxdir=/var/run/dicod")))) > > @@ -76,23 +85,44 @@ > (shell (file-append shadow "/sbin/nologin"))))) > > (define (dicod-configuration-file config) > - (define database->text > + (define item->text > (match-lambda > - (($ name module options) > + (($ name #f '()) > + `(" > +load-module " ,name ";")) > + (($ name #f options) > + (item->text (dicod-handler > + (name name) > + (module name) > + (options options)))) > + (($ name module options) > + `(" > +load-module " ,name " { > + command \"" ,module (string-join (list ,@options) " " 'prefix) "\"; > +}\n")) > + (($ name handler #f options) > + (append > + (item->text (dicod-handler > + (name handler))) > + (item->text (dicod-database > + (name name) > + (handler handler) > + (complex #t) > + (options options))))) > + (($ name handler complex options) > `(" > -load-module " ,module "; > database { > name \"" ,name "\"; > - handler \"" ,module > + handler \"" ,handler > (string-join (list ,@options) " " 'prefix) "\"; > }\n")))) > > (define configuration->text > (match-lambda > - (($ dico (interfaces ...) databases) > + (($ dico (interfaces ...) items) > (append `("listen (" > ,(string-join interfaces ", ") ");\n") > - (append-map database->text databases))))) > + (append-map item->text items))))) > > (apply mixed-text-file "dicod.conf" (configuration->text config)))