From 3f2283e1caf1c63ccfef48610724845a3a6aaa40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Thu, 16 Nov 2023 18:31:39 +0100 Subject: [PATCH] Work on new ML checkers. --- src/hackerbase.scm | 47 +++++++++++++++++++++++++++++----------------- 1 file changed, 30 insertions(+), 17 deletions(-) diff --git a/src/hackerbase.scm b/src/hackerbase.scm index be62c6d..691dd0d 100644 --- a/src/hackerbase.scm +++ b/src/hackerbase.scm @@ -226,7 +226,7 @@ #f)) ;; Load ML(s) and merge them -(define-values (MB1 internal-ml MLS) +(define-values (MB1 MLS) (if MB0 (let () (define mls (load-mailman-lists)) @@ -234,9 +234,11 @@ (mbase-merge-mailman mb ml)) MB0 mls) - (find-mailman-list mls "internal") MLS)) - (values #f #f #f))) + (values #f #f))) +(define internal-ml (if MLS (find-mailman-list MLS "internal") #f)) +(define council-ml (if MLS (find-mailman-list MLS "rada") #f)) +(define revision-ml (if MLS (find-mailman-list MLS "rk") #f)) ;; Load DokuWiki users (define MB (if MB1 @@ -281,6 +283,30 @@ (print " " (car keys) ": " (length (ldict-ref status (car keys))))) (loop (cdr keys))))))) +(define (capitalize s) + (let ((l (string->list s))) + (list->string + (cons + (char-upcase (car l)) + (cdr l))))) + +(define (check-mailing-list mls name) + (define ml (find-mailman-list mls name)) + (let-values (((missing surplus) + (mailman-compare-members ml + (mbase-active-emails MB #:suspended #t)))) + (if (null? (cdr ml)) + (print "Skipping ML check - not loaded") + (if (and (null? missing) + (null? surplus)) + (print (format "~a mailing list membership in sync." (capitalize name))) + (let () + (print (format "~a mailing list:" (capitalize name))) + (when (not (null? missing)) + (print " Missing: " missing)) + (when (not (null? surplus)) + (print " Outsiders: " surplus))))))) + ;; Perform requested action (case (-action-) ((print-info) @@ -292,20 +318,7 @@ (let () (print-members-base-table MB) (newline) - (let-values (((missing surplus) - (mailman-compare-members internal-ml - (mbase-active-emails MB #:suspended #t)))) - (if (null? (cdr internal-ml)) - (print "Skipping ML check - not loaded") - (if (and (null? missing) - (null? surplus)) - (print "Internal mailing list membership in sync.") - (let () - (print "Internal mailing list:") - (when (not (null? missing)) - (print " Missing: " missing)) - (when (not (null? surplus)) - (print " Outsiders: " surplus)))))) + (check-mailing-list MLS "internal") (print-git-status))) (newline)) ((print-stats)