Build dokuwiki module.

This commit is contained in:
Dominik Pantůček 2023-06-26 19:16:05 +02:00
parent 000b57641d
commit 6a4817c46f
3 changed files with 35 additions and 7 deletions

View file

@ -39,7 +39,8 @@ HACKERBASE-DEPS=hackerbase.scm cal-month.import.scm \
mailman.import.scm texts.import.scm tests.import.scm \
notifications.import.scm logging.import.scm \
progress.import.scm cal-period.import.scm \
util-stdout.import.scm export-web-static.import.scm
util-stdout.import.scm export-web-static.import.scm \
dokuwiki.import.scm
HACKERBASE-OBJS=hackerbase.o testing.o listing.o cal-month.o \
cal-period.o ansi.o util-dict-list.o command-line.o mbase.o \
@ -55,7 +56,7 @@ HACKERBASE-OBJS=hackerbase.o testing.o listing.o cal-month.o \
sgr-list.o sgr-block.o table-processor.o table-border.o \
table-style.o sgr-state.o util-utf8.o sgr-cell.o \
template-list-expander.o box-drawing.o util-list.o \
export-web-static.o util-dir.o racket-kwargs.o
export-web-static.o util-dir.o racket-kwargs.o dokuwiki.o
.PHONY: imports
imports: $(HACKERBASE-DEPS)
@ -482,3 +483,10 @@ UTIL-DIR-SOURCES=util-dir.scm
util-dir.o: util-dir.import.scm
util-dir.import.scm: $(UTIL-DIR-SOURCES)
DOKUWIKI-SOURCES=dokuwiki.scm racket-kwargs.import.scm \
configuration.import.scm util-parser.import.scm \
util-csv.import.scm
dokuwiki.o: dokuwiki.import.scm
dokuwiki.import.scm: $(DOKUWIKI-SOURCES)

View file

@ -27,25 +27,44 @@
(module
dokuwiki
(
dokuwiki-load-users
)
(import scheme
(chicken base)
(chicken pathname)
(chicken io)
(chicken string)
racket-kwargs
configuration
util-parser)
util-parser
util-csv)
;; Parses all dokuwiki users from current-input-port
;; Special CSV-like parser
(define auth-line-parser
(make-csv-line-parser #\: #f))
;; Parses all dokuwiki users from current-input-port, returns a list
;; of lists: username, name, email, groups (list)
(define (parse-dokuwiki-users-auth)
(let loop ((lines (read-lines))
(users '()))
(if (null? lines)
users
(let ((line (car lines)))
(loop (cdr lines)
users)))))
(let ((line (parser-preprocess-line (car lines))))
(if (equal? line "")
(loop (cdr lines)
users)
(let* ((row (auth-line-parser line))
(username (car row))
(name (caddr row))
(email (cadddr row))
(groupstr (list-ref row 4))
(groups (string-split groupstr ",")))
(print "u=" username " n=" name " e=" email " g=" groups)
(loop (cdr lines)
(cons (list username name email groups)
users))))))))
;; Parses all users from given filename
(define (load-dokuwiki-users-auth fname)

View file

@ -28,6 +28,7 @@
(module
util-csv
(
make-csv-line-parser
csv-parse
csv-split-header
csv-simple-tests!