guix-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug#27855] [PATCH] gnu: Add rsync service.


From: Christopher Baines
Subject: [bug#27855] [PATCH] gnu: Add rsync service.
Date: Sat, 29 Jul 2017 12:55:54 +0100

On Sat, 29 Jul 2017 14:03:49 +0300
Oleg Pykhalov <address@hidden> wrote:

> >> address@hidden {Scheme Variable} rsync-service-type
> >> +This is the type for the @uref{https://rsync.samba.org} rsync
> >> daemon, address@hidden record as in this example:
> >> +
> >> address@hidden
> >> +(service rsync-service-type
> >> +         (rsync-configuration))
> >> address@hidden example
> >> +
> >> +See below for details about @code{rsync-configuration}.
> >> address@hidden deffn
> >> +
> >> address@hidden {Data Type} rsync-configuration
> >> +Data type representing the configuration for @code{rsync-service}.
> >> +
> >> address@hidden @asis
> >> address@hidden @code{package} (default: @var{rsync})
> >> +Package object of the Rsync utility for efficiently transferring
> >> and +synchronizing files.  
> >
> > Object doesn't really fit here, if anything its a record. Also, I
> > don't think this needs a description of what rsync does, it's
> > probably clearest to just say that this is the rsync package?  
> 
> OK, is it good?
> 
>     @code{rsync} package to use.

Yep, in my opinion, that is the right amount of information.

> >> +(define (rsync-config-file config)
> >> +  "Return the rsync configuration file corresponding to CONFIG."
> >> +  (computed-file
> >> +   "rsync.conf"
> >> +   #~(begin
> >> +       (call-with-output-file #$output
> >> +         (lambda (port)
> >> +           (display "# Generated by 'rsync-service'.\n" port)
> >> +           (format port "pid file = ~a\n"
> >> +                   #$(rsync-configuration-pid-file config))
> >> +           (format port "lock file = ~a\n"
> >> +                   #$(rsync-configuration-lock-file config))
> >> +           (format port "log file = ~a\n"
> >> +                   #$(rsync-configuration-log-file config))
> >> +           (format port "port = ~a\n"
> >> +                   #$(number->string
> >> +                      (rsync-configuration-port-number config)))
> >> +           (format port "use chroot = ~a\n"
> >> +                   #$(if (rsync-configuration-use-chroot? config)
> >> +                         "true" "false"))
> >> +           (display "[files]\n" port)
> >> +           (format port "path = ~a\n"
> >> +                   #$(rsync-configuration-share-path config))
> >> +           (format port "comment = ~a\n"
> >> +                   #$(rsync-configuration-share-comment config))
> >> +           (format port "read only = ~a\n"
> >> +                   #$(if (rsync-configuration-read-only? config)
> >> +                         "true" "false"))
> >> +           (format port "timeout = ~a\n"
> >> +                   #$(number->string
> >> +                      (rsync-configuration-timeout config)))
> >> +           #t)))))  
> >
> > It might be neater here to use mixed-text-file here. It might look
> > something like...
> >
> > (define (rsync-config-file config)
> >   "Return the rsync configuration file corresponding to CONFIG."
> >   (match config
> >     (($ <rsync-configuration> package port-number pid-file lock-file
> >                               log-file use-chroot? share-path
> >                               share-comment read-only? timeout)
> >      (mixed text-file "rsync.conf"
> >       "# Generated by 'rsync-service'.\n"
> >       "pid file = " pid-file "\n"
> >       "lock file = " lock-file "\n"
> >       "log file = " log-file "\n"
> >       "port = " (number->string port-number) "\n"
> >       "use chroot = " (if use-chroot? "true" "false") "\n"
> >       "[files]\n"
> >       "path = " share-path "\n"
> >       "comment = " share-comment "\n"
> >       "read only = " (if read-only? "true" "false") "\n"
> >       "timeout = " (number->string timeout) "\n"))))
> >      
> >
> > One thing I tried with the Tailon service, was to define a
> > gexp-compiler for the record type representing the configuration
> > file. One really big advantage in the case of Tailon is that it
> > easily allows the use of a custom file, just by providing a
> > different gexp.  
> 
> So, this way you could provide your existing Tailon config as a file
> in system declaration?  Nice.

Yep, I think something like the following should just work, but I
haven't tested it yet.

  (service tailon-service-type
           (tailon-configuration
             (config-file (local-file "../tailon.yml"))))

I bring this up, as I think it is great if this is a feature of all
services, I'm having trouble though working out how you might do that
in this case, with the use of values in the activation service
extension. I can see complicated approaches, but nothing simple and
clear enough.

Attachment: pgpE7ckwHi3BF.pgp
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]