mirror of
https://codeberg.org/guix/guix.git
synced 2025-10-02 02:15:12 +00:00
services: shepherd: Add ‘shepherd-timer’.
* gnu/services/shepherd.scm (shepherd-timer): New procedure. * gnu/home/services/shepherd.scm: Re-export it. Suggested-by: Luis Guilherme Coelho <lgcoelho@disroot.org> Reviewed-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Change-Id: I5f702d4119eee47381a7a1ac650b8ad3fc5e6cdd
This commit is contained in:
parent
230f1a9c1c
commit
a35fa2d2cb
2 changed files with 28 additions and 1 deletions
|
@ -53,7 +53,8 @@
|
||||||
|
|
||||||
shepherd-action
|
shepherd-action
|
||||||
shepherd-configuration-action
|
shepherd-configuration-action
|
||||||
shepherd-trigger-action))
|
shepherd-trigger-action
|
||||||
|
shepherd-timer))
|
||||||
|
|
||||||
(define-record-type* <home-shepherd-configuration>
|
(define-record-type* <home-shepherd-configuration>
|
||||||
home-shepherd-configuration make-home-shepherd-configuration
|
home-shepherd-configuration make-home-shepherd-configuration
|
||||||
|
|
|
@ -72,6 +72,7 @@
|
||||||
shepherd-action-procedure
|
shepherd-action-procedure
|
||||||
|
|
||||||
shepherd-configuration-action
|
shepherd-configuration-action
|
||||||
|
shepherd-timer
|
||||||
shepherd-trigger-action
|
shepherd-trigger-action
|
||||||
|
|
||||||
%default-modules
|
%default-modules
|
||||||
|
@ -257,6 +258,31 @@ DEFAULT is given, use it as the service's default value."
|
||||||
"Return the 'canonical name' of SERVICE."
|
"Return the 'canonical name' of SERVICE."
|
||||||
(first (shepherd-service-provision service)))
|
(first (shepherd-service-provision service)))
|
||||||
|
|
||||||
|
(define %default-timer-documentation
|
||||||
|
"Periodically run a command.") ;no i18n since it gets in the shepherd process
|
||||||
|
|
||||||
|
(define* (shepherd-timer provision schedule command
|
||||||
|
#:key
|
||||||
|
(requirement '())
|
||||||
|
(documentation %default-timer-documentation))
|
||||||
|
"Return a Shepherd service with the given PROVISION periodically running
|
||||||
|
COMMAND, a list-valued gexp, according to SCHEDULE, a string in Vixie cron
|
||||||
|
syntax or a gexp providing a Shepherd calendar event. DOCUMENTATION is the
|
||||||
|
string that appears when running 'herd doc SERVICE'."
|
||||||
|
(shepherd-service
|
||||||
|
(provision provision)
|
||||||
|
(requirement requirement)
|
||||||
|
(modules '((shepherd service timer)))
|
||||||
|
(start #~(make-timer-constructor
|
||||||
|
#$(if (string? schedule)
|
||||||
|
#~(cron-string->calendar-event #$schedule)
|
||||||
|
schedule)
|
||||||
|
(command '(#$@command))
|
||||||
|
#:wait-for-termination? #t))
|
||||||
|
(stop #~(make-timer-destructor))
|
||||||
|
(documentation documentation)
|
||||||
|
(actions (list shepherd-trigger-action))))
|
||||||
|
|
||||||
(define (assert-valid-graph services)
|
(define (assert-valid-graph services)
|
||||||
"Raise an error if SERVICES does not define a valid shepherd service graph,
|
"Raise an error if SERVICES does not define a valid shepherd service graph,
|
||||||
for instance if a service requires a nonexistent service, or if more than one
|
for instance if a service requires a nonexistent service, or if more than one
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue