[bug#77041,01/16] services: shepherd: Factorize ‘trigger’ action.

Message ID 8849153c52dfe2ceec61a2cdbf3c07cb3363ff7d.1742073920.git.ludo@gnu.org
State New
Headers
Series Replacing mcron jobs by Shepherd timers |

Commit Message

Ludovic Courtès March 15, 2025, 9:37 p.m. UTC
  * gnu/services/shepherd.scm (shepherd-trigger-action): New variable.
* gnu/services/admin.scm (log-cleanup-shepherd-services)
(unattended-upgrade-shepherd-services): Use it.
* gnu/services/backup.scm (restic-backup-job->shepherd-service): Use it.

Change-Id: I834b5b9b61c78f012ee9306df6cf4fd8a93dd6d2
---
 gnu/services/admin.scm    | 10 ++--------
 gnu/services/backup.scm   |  6 +-----
 gnu/services/shepherd.scm |  8 ++++++++
 3 files changed, 11 insertions(+), 13 deletions(-)
  

Patch

diff --git a/gnu/services/admin.scm b/gnu/services/admin.scm
index 2a11a4f4f1..726ca5f918 100644
--- a/gnu/services/admin.scm
+++ b/gnu/services/admin.scm
@@ -404,10 +404,7 @@  (define (log-cleanup-shepherd-services configuration)
                              schedule)
                        (command '(#$program))))
              (stop #~(make-timer-destructor))
-             (actions (list (shepherd-action
-                             (name 'trigger)
-                             (documentation "Trigger log cleanup.")
-                             (procedure #~trigger-timer))))
+             (actions (list shepherd-trigger-action))
              (documentation "Periodically delete old log files."))))))
 
 (define log-cleanup-service-type
@@ -671,10 +668,7 @@  (define (unattended-upgrade-shepherd-services config)
                    ;; again.
                    #:wait-for-termination? #t))
          (stop #~(make-timer-destructor))
-         (actions (list (shepherd-action
-                         (name 'trigger)
-                         (documentation "Trigger unattended system upgrade.")
-                         (procedure #~trigger-timer)))))))
+         (actions (list shepherd-trigger-action)))))
 
 (define unattended-upgrade-service-type
   (service-type
diff --git a/gnu/services/backup.scm b/gnu/services/backup.scm
index 4d8cf167f0..6e066bd3d6 100644
--- a/gnu/services/backup.scm
+++ b/gnu/services/backup.scm
@@ -255,11 +255,7 @@  (define (restic-backup-job->shepherd-service config)
                                                 max-duration)))
                       (stop
                        #~(make-timer-destructor))
-                      (actions (list (shepherd-action
-                                      (name 'trigger)
-                                      (documentation "Manually trigger a backup,
-without waiting for the scheduled time.")
-                                      (procedure #~trigger-timer)))))))
+                      (actions (list shepherd-trigger-action)))))
 
 (define (restic-guix-wrapper-package jobs)
   (package
diff --git a/gnu/services/shepherd.scm b/gnu/services/shepherd.scm
index 65c49b9c59..e7e414b920 100644
--- a/gnu/services/shepherd.scm
+++ b/gnu/services/shepherd.scm
@@ -72,6 +72,7 @@  (define-module (gnu services shepherd)
             shepherd-action-procedure
 
             shepherd-configuration-action
+            shepherd-trigger-action
 
             %default-modules
 
@@ -404,6 +405,13 @@  (define (shepherd-configuration-action file)
                   (format #t "~a~%" #$file)
                   #$file))))
 
+(define shepherd-trigger-action
+  ;; Action to trigger a timer.
+  (shepherd-action
+   (name 'trigger)
+   (documentation "Trigger immediate execution of this timer.")
+   (procedure #~trigger-timer)))
+
 (define (shepherd-configuration-file services shepherd)
   "Return the shepherd configuration file for SERVICES.  SHEPHERD is used
 as shepherd package."