Adding member to mailinglist.

This commit is contained in:
Dominik Pantůček 2023-09-15 18:44:40 +02:00
parent 4e0d8108e6
commit 38ab4cb5da
2 changed files with 32 additions and 4 deletions

View file

@ -111,7 +111,8 @@
(define (find-mailman-list lsts name)
(assoc name lsts))
(define-mailman-proc add-email-to-mailman-list add-email-to-mailman2-list)
(define-mailman-proc add-email-to-mailman-list
add-email-to-mailman2-list add-email-to-mailman3-list)
(define-mailman-proc remove-email-from-mailman-list remove-email-from-mailman2-list)
;; Ensures given email is in given ML

View file

@ -30,6 +30,8 @@
(
list-mailman3-lists
list-mailman3-list-members
add-email-to-mailman3-list
)
(import scheme
@ -41,17 +43,30 @@
util-io
util-list)
;; Just a convenient converter
(define (mailman3:cmd+args0)
(let ((cmd+args0 (string-split (*mailman3-bin*) " ")))
(values (car cmd+args0)
(cdr cmd+args0))))
;; Runs the mailman3 binary with any arguments and returns the lines
;; produced on stdout
(define (get-mailman3-output-lines . args1)
(let* ((cmd+args0 (string-split (*mailman3-bin*) " "))
(cmd (car cmd+args0))
(args0 (cdr cmd+args0)))
(let-values (((cmd args0) (mailman3:cmd+args0)))
(apply
get-process-output-lines
cmd
(append args0 args1))))
;; Sends all lines to the process
(define (mailman3-send/recv args1 . lines)
(let-values (((cmd args0) (mailman3:cmd+args0)))
(apply
process-send/recv
cmd
(append args0 args1)
lines)))
;; Returns the list of available lists
(define (list-mailman3-lists)
(filter
@ -71,4 +86,16 @@
"-e")
string-ci<?))
;; Adds given email
(define (add-email-to-mailman3-list lst email)
(print "Add " email " to " lst ".")
(let ((result
(mailman3-send/recv
(list "addmembers" "-" (format "~A@brmlab.cz" lst))
email)))
(let loop ((lines result))
(when (not (null? lines))
(print " | " (car lines))
(loop (cdr lines))))))
)