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 \ mailman.import.scm texts.import.scm tests.import.scm \
notifications.import.scm logging.import.scm \ notifications.import.scm logging.import.scm \
progress.import.scm cal-period.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 \ 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 \ 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 \ sgr-list.o sgr-block.o table-processor.o table-border.o \
table-style.o sgr-state.o util-utf8.o sgr-cell.o \ table-style.o sgr-state.o util-utf8.o sgr-cell.o \
template-list-expander.o box-drawing.o util-list.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 .PHONY: imports
imports: $(HACKERBASE-DEPS) imports: $(HACKERBASE-DEPS)
@ -482,3 +483,10 @@ UTIL-DIR-SOURCES=util-dir.scm
util-dir.o: util-dir.import.scm util-dir.o: util-dir.import.scm
util-dir.import.scm: $(UTIL-DIR-SOURCES) 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 (module
dokuwiki dokuwiki
( (
dokuwiki-load-users
) )
(import scheme (import scheme
(chicken base) (chicken base)
(chicken pathname) (chicken pathname)
(chicken io) (chicken io)
(chicken string)
racket-kwargs racket-kwargs
configuration 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) (define (parse-dokuwiki-users-auth)
(let loop ((lines (read-lines)) (let loop ((lines (read-lines))
(users '())) (users '()))
(if (null? lines) (if (null? lines)
users users
(let ((line (car lines))) (let ((line (parser-preprocess-line (car lines))))
(if (equal? line "")
(loop (cdr lines) (loop (cdr lines)
users))))) 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 ;; Parses all users from given filename
(define (load-dokuwiki-users-auth fname) (define (load-dokuwiki-users-auth fname)

View file

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