branch: main
commit f5020950c8fe3b4f4f3cd464343c07cff278ce4d
Author: Romain GARBAGE <romain.garb...@inria.fr>
AuthorDate: Fri Apr 4 18:34:38 2025 +0200

    forgejo: Add support for different types of notification to Forgejo.
    
    * src/cuirass/forges/forgejo.scm (forgejo-handle-notification): Add support
    for different types of notification to Forgejo.
    (forgejo-notification-in-pull-request-body): New variable.
    * src/cuirass/parameters.scm (%forgejo-notification-type): New variable.
    
    Signed-off-by: Ludovic Courtès <l...@gnu.org>
---
 src/cuirass/forges/forgejo.scm | 43 ++++++++++++++++++++++++++++++++----------
 src/cuirass/parameters.scm     |  9 ++++++++-
 2 files changed, 41 insertions(+), 11 deletions(-)

diff --git a/src/cuirass/forges/forgejo.scm b/src/cuirass/forges/forgejo.scm
index eef6885..f5e3cdc 100644
--- a/src/cuirass/forges/forgejo.scm
+++ b/src/cuirass/forges/forgejo.scm
@@ -384,16 +384,17 @@ CONTENT, a string. Returns the content of the updated 
pull-request body."
 ;;; Forgejo specific handler of the forge-notification-service agent.
 ;;;
 
-(define* (forgejo-handle-notification spec
-                                      #:key
-                                      (jobset-created #f)
-                                      (evaluation-started #f)
-                                      (evaluation-succeeded #f)
-                                      (evaluation-failed #f)
-                                      (build-results #f))
-  "Send notifications to a Forgejo instance. SPEC is a specification record,
-JOBSET-CREATED is a boolean, EVALUATION-STARTED, EVALUATION-SUCCEEDED and
-EVALUATION-FAILED are numbers and BUILD-RESULTS is a list of build records."
+(define* (forgejo-notification-in-pull-request-body spec
+                                                    #:key
+                                                    (jobset-created #f)
+                                                    (evaluation-started #f)
+                                                    (evaluation-succeeded #f)
+                                                    (evaluation-failed #f)
+                                                    (build-results #f))
+  "Notify a Forgejo instance of a status change by editing the pull request 
main
+message. SPEC is a specification record, JOBSET-CREATED is a boolean,
+EVALUATION-STARTED, EVALUATION-SUCCEEDED and EVALUATION-FAILED are numbers and
+BUILD-RESULTS is a list of build records."
   (log-info "preparing Forgejo notification for spec '~a'"
             (specification-name spec))
 
@@ -454,3 +455,25 @@ EVALUATION-FAILED are numbers and BUILD-RESULTS is a list 
of build records."
     ;; XXX: Raise an error when no message has been generated?
     (when message
       (update-forgejo-pull-request-from-spec spec message))))
+
+(define* (forgejo-handle-notification spec
+                                      #:key
+                                      (jobset-created #f)
+                                      (evaluation-started #f)
+                                      (evaluation-succeeded #f)
+                                      (evaluation-failed #f)
+                                      (build-results #f))
+  "Send notifications to a Forgejo instance. SPEC is a specification record,
+JOBSET-CREATED is a boolean, EVALUATION-STARTED, EVALUATION-SUCCEEDED and
+EVALUATION-FAILED are numbers and BUILD-RESULTS is a list of build records."
+  (match (%forgejo-notification-type)
+    ('update-pull-request-body
+     (forgejo-notification-in-pull-request-body spec
+                                                #:jobset-created jobset-created
+                                                #:evaluation-started 
evaluation-started
+                                                #:evaluation-succeeded 
evaluation-succeeded
+                                                #:evaluation-failed 
evaluation-failed
+                                                #:build-results build-results))
+    (type
+     (log-error "forgejo-handle-notification: unsupported notification type ~a"
+                type))))
diff --git a/src/cuirass/parameters.scm b/src/cuirass/parameters.scm
index 0a5fe21..668c29c 100644
--- a/src/cuirass/parameters.scm
+++ b/src/cuirass/parameters.scm
@@ -1,5 +1,6 @@
 ;;; parameters.scm -- Cuirass parameters.
 ;;; Copyright © 2021 Mathieu Othacehe <othac...@gnu.org>
+;;; Copyright © 2025 Romain Garbage <romain.garb...@inria.fr>
 ;;;
 ;;; This file is part of Cuirass.
 ;;;
@@ -29,7 +30,9 @@
 
             %mastodon-instance-name
             %mastodon-instance-url
-            %mastodon-instance-token))
+            %mastodon-instance-token
+
+            %forgejo-notification-type))
 
 ;; This variable is looked up by 'mu-message-send'.
 (define-public mu-debug 0)
@@ -71,3 +74,7 @@
 ;; The token used to authenticate on the Mastodon instance.
 (define %mastodon-instance-token
   (make-parameter #f))
+
+;; The type of notification to send to a Forgejo server.
+(define %forgejo-notification-type
+  (make-parameter 'update-pull-request-body))

Reply via email to