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) (define (find-mailman-list lsts name)
(assoc name lsts)) (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) (define-mailman-proc remove-email-from-mailman-list remove-email-from-mailman2-list)
;; Ensures given email is in given ML ;; Ensures given email is in given ML

View file

@ -30,6 +30,8 @@
( (
list-mailman3-lists list-mailman3-lists
list-mailman3-list-members list-mailman3-list-members
add-email-to-mailman3-list
) )
(import scheme (import scheme
@ -41,17 +43,30 @@
util-io util-io
util-list) 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 ;; Runs the mailman3 binary with any arguments and returns the lines
;; produced on stdout ;; produced on stdout
(define (get-mailman3-output-lines . args1) (define (get-mailman3-output-lines . args1)
(let* ((cmd+args0 (string-split (*mailman3-bin*) " ")) (let-values (((cmd args0) (mailman3:cmd+args0)))
(cmd (car cmd+args0))
(args0 (cdr cmd+args0)))
(apply (apply
get-process-output-lines get-process-output-lines
cmd cmd
(append args0 args1)))) (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 ;; Returns the list of available lists
(define (list-mailman3-lists) (define (list-mailman3-lists)
(filter (filter
@ -71,4 +86,16 @@
"-e") "-e")
string-ci<?)) 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))))))
) )