From db9f98dc7ede348e30c1c5ffaffbbb1320c26c3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Thu, 16 Nov 2023 18:56:33 +0100 Subject: [PATCH 01/10] Add support for pred. --- src/hackerbase.scm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/hackerbase.scm b/src/hackerbase.scm index 2a071e1..afb38fd 100644 --- a/src/hackerbase.scm +++ b/src/hackerbase.scm @@ -291,11 +291,14 @@ (char-upcase (car l)) (map char-downcase (cdr l)))))) -(define (check-mailing-list mls name) +(define* (check-mailing-list mls name #:pred? (pred? #f)) (define ml (find-mailman-list mls name)) (let-values (((missing surplus) (mailman-compare-members ml - (mbase-active-emails MB #:suspended #t)))) + (mbase-active-emails MB + #:suspended #t + #:pred? pred? + )))) (if (null? (cdr ml)) (print "Skipping ML check - not loaded") (if (and (null? missing) From 3520d492932ba4c7cafa41d478904b1eb94eb4ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Thu, 16 Nov 2023 18:57:52 +0100 Subject: [PATCH 02/10] Use kwargs. --- src/hackerbase.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/hackerbase.scm b/src/hackerbase.scm index afb38fd..20ad07a 100644 --- a/src/hackerbase.scm +++ b/src/hackerbase.scm @@ -48,7 +48,8 @@ util-stdout table export-web-static - dokuwiki) + dokuwiki + racket-kwargs) ;; Command-line options and configurable parameters (define -needs-bank- (make-parameter #f)) From fb47d60550cc1bcea5b7842c6c344c8253155eca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Thu, 16 Nov 2023 19:03:57 +0100 Subject: [PATCH 03/10] New predicate for council ML. --- src/hackerbase.scm | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/hackerbase.scm b/src/hackerbase.scm index 20ad07a..6a64884 100644 --- a/src/hackerbase.scm +++ b/src/hackerbase.scm @@ -238,9 +238,6 @@ mls) mls)) (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 @@ -324,7 +321,11 @@ (print-members-base-table MB) (newline) (check-mailing-list MLS "internal") - (check-mailing-list MLS "rada" #:pred? brmember-council?) + (check-mailing-list MLS "rada" + #:pred? (lambda (mr) + (or (brmember-council? mr) + (brmember-chair? mr) + (brmember-revision? mr)))) (check-mailing-list MLS "rk" #:pred? brmember-revision?) (print-git-status))) (newline)) @@ -393,7 +394,8 @@ (print-unpaired-table MB)) ((mlsync) (cond ((-normal-month-) - (mailman-sync-members internal-ml (mbase-active-emails MB #:suspended #t))) + (mailman-sync-members (find-mailman-list MLS "internal") + (mbase-active-emails MB #:suspended #t))) (else (print "Mailman synchronization disabled with manually specified current month.")))) ((notify) From 27a1a3522be5dbdcd952dab6742a021644c55c5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Thu, 16 Nov 2023 19:08:47 +0100 Subject: [PATCH 04/10] Move capitalize to util-string. --- src/hackerbase.scm | 11 ++--------- src/util-string.scm | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/hackerbase.scm b/src/hackerbase.scm index 6a64884..4ca9264 100644 --- a/src/hackerbase.scm +++ b/src/hackerbase.scm @@ -282,13 +282,6 @@ (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)) - (map char-downcase (cdr l)))))) - (define* (check-mailing-list mls name #:pred? (pred? #f)) (define ml (find-mailman-list mls name)) (let-values (((missing surplus) @@ -301,9 +294,9 @@ (print "Skipping ML check - not loaded") (if (and (null? missing) (null? surplus)) - (print (format "~a mailing list membership in sync." (capitalize name))) + (print (format "~a mailing list membership in sync." (string-capitalize name))) (let () - (print (format "~a mailing list:" (capitalize name))) + (print (format "~a mailing list:" (string-capitalize name))) (when (not (null? missing)) (print " Missing: " missing)) (when (not (null? surplus)) diff --git a/src/util-string.scm b/src/util-string.scm index d9914b9..2a17d7a 100644 --- a/src/util-string.scm +++ b/src/util-string.scm @@ -37,6 +37,8 @@ string-upcase + string-capitalize + string-tests! ) @@ -100,6 +102,18 @@ using ```char-upcase```. Does not work with UTF-8.") (map char-upcase (string->list str)))) + (define/doc (string-capitalize str) + ("* ```str``` - arbitrary string + +Returns the ```str``` with the first character converted to upper case +using ```char-upcase``` and the remainder converted to lower case +using ```char-downcase```. Does not work with UTF-8.") + (let ((l (string->list str))) + (list->string + (cons + (char-upcase (car l)) + (map char-downcase (cdr l)))))) + ;; Performs utils module self-tests. (define (string-tests!) (run-tests @@ -122,6 +136,12 @@ using ```char-upcase```. Does not work with UTF-8.") (test-equal? string-upcase (string-upcase "asdFGH") "ASDFGH") + (test-equal? string-capitalize + (string-capitalize "asdf") + "Asdf") + (test-equal? string-capitalize + (string-capitalize "ASDF") + "Asdf") )) ) From ca5e535025e25b284d223eed26e7a675c96898ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Thu, 16 Nov 2023 19:11:11 +0100 Subject: [PATCH 05/10] Fix missing import. --- src/hackerbase.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/hackerbase.scm b/src/hackerbase.scm index 4ca9264..19da9ca 100644 --- a/src/hackerbase.scm +++ b/src/hackerbase.scm @@ -49,7 +49,8 @@ table export-web-static dokuwiki - racket-kwargs) + racket-kwargs + util-string) ;; Command-line options and configurable parameters (define -needs-bank- (make-parameter #f)) From 68bad91262aea287b61cfb4d06138e8b46937326 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Thu, 16 Nov 2023 19:15:43 +0100 Subject: [PATCH 06/10] Sync rada ML. --- src/hackerbase.scm | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/hackerbase.scm b/src/hackerbase.scm index 19da9ca..f8c9351 100644 --- a/src/hackerbase.scm +++ b/src/hackerbase.scm @@ -303,6 +303,11 @@ (when (not (null? surplus)) (print " Outsiders: " surplus))))))) +(define (rada-ml-pred? mr) + (or (brmember-council? mr) + (brmember-chair? mr) + (brmember-revision? mr))) + ;; Perform requested action (case (-action-) ((print-info) @@ -316,10 +321,7 @@ (newline) (check-mailing-list MLS "internal") (check-mailing-list MLS "rada" - #:pred? (lambda (mr) - (or (brmember-council? mr) - (brmember-chair? mr) - (brmember-revision? mr)))) + #:pred? rada-ml-pred?) (check-mailing-list MLS "rk" #:pred? brmember-revision?) (print-git-status))) (newline)) @@ -389,7 +391,10 @@ ((mlsync) (cond ((-normal-month-) (mailman-sync-members (find-mailman-list MLS "internal") - (mbase-active-emails MB #:suspended #t))) + (mbase-active-emails MB #:suspended #t)) + (mailman-sync-members (find-mailman-list MLS "rada") + (mbase-active-emails MB + #:pred rada-ml-pred?))) (else (print "Mailman synchronization disabled with manually specified current month.")))) ((notify) From 0b7f042eaf8181ecced41b736c9c82b8444dea16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Thu, 16 Nov 2023 19:16:28 +0100 Subject: [PATCH 07/10] Fix kwarg. --- src/hackerbase.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hackerbase.scm b/src/hackerbase.scm index f8c9351..7be60d1 100644 --- a/src/hackerbase.scm +++ b/src/hackerbase.scm @@ -394,7 +394,7 @@ (mbase-active-emails MB #:suspended #t)) (mailman-sync-members (find-mailman-list MLS "rada") (mbase-active-emails MB - #:pred rada-ml-pred?))) + #:pred? rada-ml-pred?))) (else (print "Mailman synchronization disabled with manually specified current month.")))) ((notify) From 81cc80c7c03f2825e2eaabea66150cc312dc5546 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Thu, 16 Nov 2023 19:18:30 +0100 Subject: [PATCH 08/10] Sync RK as well. --- src/hackerbase.scm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/hackerbase.scm b/src/hackerbase.scm index 7be60d1..f458a18 100644 --- a/src/hackerbase.scm +++ b/src/hackerbase.scm @@ -394,7 +394,10 @@ (mbase-active-emails MB #:suspended #t)) (mailman-sync-members (find-mailman-list MLS "rada") (mbase-active-emails MB - #:pred? rada-ml-pred?))) + #:pred? rada-ml-pred?)) + (mailman-sync-members (find-mailman-list MLS "rk") + (mbase-active-emails MB + #:pred? brmember-revision?))) (else (print "Mailman synchronization disabled with manually specified current month.")))) ((notify) From b568de15c289aecb1f723c331dc55ca079c9a16e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Thu, 16 Nov 2023 19:20:31 +0100 Subject: [PATCH 09/10] Bump version to 1.12. --- src/texts.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/texts.scm b/src/texts.scm index f08ee94..203d078 100644 --- a/src/texts.scm +++ b/src/texts.scm @@ -39,7 +39,7 @@ (chicken format)) ;; Short banner - (define banner-line "HackerBase 1.11 (c) 2023 Brmlab, z.s.") + (define banner-line "HackerBase 1.12 (c) 2023 Brmlab, z.s.") ;; Banner source with numbers for ANSI CSI SGR (define banner-source " From 6facd2a2cca0b23365a72a9f7b7487fb1a119799 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Thu, 16 Nov 2023 21:45:49 +0100 Subject: [PATCH 10/10] Add current stats. --- members-base-stats.gp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/members-base-stats.gp b/members-base-stats.gp index 5f4f588..a8bfdeb 100644 --- a/members-base-stats.gp +++ b/members-base-stats.gp @@ -1,8 +1,8 @@ set terminal pngcairo size 1000,600 set title "Members stats" -set output 'members-base-stats.png' +set output 'members-base-stats-2023-11.png' -src='members-base-stats.data' +src='members-base-stats-2023-11.data' set timefmt "%Y-%m" set xdata time @@ -15,8 +15,8 @@ set grid set key out right -plot[][0:] \ -src u 1:3 w l t 'active', \ +plot[1420066800:][0:] \ +src u 1:3 w l lw 2 t 'active', \ src u 1:4 w l t 'suspended', \ src u 1:5 w l t 'students', \ src u 1:6 w l t 'destroyed'