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

Message ID 3aa2a59b21ca35f4821768248914c85f77ab4868.1742642743.git.ludo@gnu.org
State New
Headers
Series Replacing mcron jobs by Shepherd timers |

Commit Message

Ludovic Courtès March 22, 2025, 11:36 a.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.
* gnu/home/services/shepherd.scm: Re-export ‘shepherd-trigger-action’.

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

Patch

diff --git a/gnu/home/services/shepherd.scm b/gnu/home/services/shepherd.scm
index b2b141d4de..25f1641b32 100644
--- a/gnu/home/services/shepherd.scm
+++ b/gnu/home/services/shepherd.scm
@@ -52,7 +52,8 @@  (define-module (gnu home services shepherd)
                shepherd-service-modules
 
                shepherd-action
-               shepherd-configuration-action))
+               shepherd-configuration-action
+               shepherd-trigger-action))
 
 (define-record-type* <home-shepherd-configuration>
   home-shepherd-configuration make-home-shepherd-configuration
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."