Use syntax for providing versioned mailman procedures.

This commit is contained in:
Dominik Pantůček 2023-09-14 21:47:20 +02:00
parent ae048d505a
commit 6edc7ce0de
2 changed files with 23 additions and 9 deletions

View file

@ -27,18 +27,32 @@
(module
mailman
(
list-mailman-lists
)
()
(import scheme
(chicken base)
(chicken module)
mailman2)
(define *mailman-version* (make-parameter 2))
(define (list-mailman-lists)
(case (*mailman-version*)
((2) (list-mailman2-lists))))
(define-syntax define-mailman-proc
(syntax-rules ()
((_ name proc2)
(begin
(export name)
(define (name . args)
(case (*mailman-version*)
((2) (apply proc2 args))))))
((_ name proc2 proc3)
(begin
(export name)
(define (name . args)
(case (*mailman-version*)
((2) (apply proc2 args))
((3) (apply proc3 args))))))))
(define-mailman-proc list-mailman-lists list-mailman2-lists)
(define-mailman-proc list-mailman-list-members list-mailman2-list-members)
)

View file

@ -31,7 +31,7 @@
*mailman2-bin*
list-mailman2-lists
list-mailman-list-members
list-mailman2-list-members
load-mailman-list
load-mailman-lists
@ -91,7 +91,7 @@
(get-mailman-output-lines "list_lists" "-b"))
;; Returns the list of members of given list
(define (list-mailman-list-members lst)
(define (list-mailman2-list-members lst)
(sort
(get-mailman-output-lines "list_members" lst)
string-ci<?))
@ -110,7 +110,7 @@
;; emails.
(define (load-mailman-list name)
(make-mailman-list name
(list-mailman-list-members name)))
(list-mailman2-list-members name)))
;; Loads all lists and members
(define (load-mailman-lists)