Port last bits and pieces of orig tool.

This commit is contained in:
Dominik Pantůček 2023-03-16 19:53:54 +01:00
parent 4419d0de21
commit 342797575f
4 changed files with 56 additions and 244 deletions

View file

@ -71,6 +71,7 @@
(-mfec (n) "Member-File parser Error Context (lines)" (*member-file-context* (string->number n)))
(-mi (id) "Specify member by id" (-member-id- (string->number id)))
(-mn (nick) "Specify member by nick" (-member-nick- nick))
(-pi () "Print information" (-action- 'print-info))
)
;; Load the members database (required for everything anyway)
@ -83,5 +84,55 @@
(find-member-by-nick MB (-member-nick-))
#f)))
;; ...
(void)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
(import (chicken string)
(chicken sort))
(define (print-members-base-info mb)
(let ((nicks (list-members-nicks mb)))
(print "Members ("
(length nicks)
"): "
(string-intersperse
(sort
nicks
string<?)
", "))))
(define (print-member-record-info mr)
(let* ((id (dict-ref mr 'id))
(aliases (dict-ref mr 'symlinks))
(info (dict-ref mr 'info))
(sinfo (sort info
(lambda (a b)
(string<?
(symbol->string (car a))
(symbol->string (car b)))))))
(print "User " id " alias(es): "
(string-intersperse
(map symbol->string aliases)
", "))
(newline)
(let loop ((sinfo sinfo))
(when (not (null? sinfo))
(let* ((kv (car sinfo))
(k (car kv))
(v (cdr kv)))
(print " " k ":\t"
(if (member k '(student suspend))
(periods->string v)
v))
(loop (cdr sinfo)))))))
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Perform requested action
(case (-action-)
((print-info)
(newline)
(if mr
(print-member-record-info mr)
(print-members-base-info MB))
(newline)))