Put loading all together.
This commit is contained in:
parent
4e97d6f4da
commit
88768aae8c
1 changed files with 67 additions and 38 deletions
105
brmsaptool.scm
105
brmsaptool.scm
|
@ -298,43 +298,7 @@
|
|||
(print " ok."))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; Members database
|
||||
|
||||
|
||||
;; Loads all symlinks from (*members-directory*) returning a list of
|
||||
;; pairs (name . destination)
|
||||
(define (load-members-raw-index)
|
||||
(let loop ((fns (directory (*members-directory*)))
|
||||
(rs '()))
|
||||
(if (null? fns)
|
||||
rs
|
||||
(let* ((fn (car fns))
|
||||
(ffn (make-pathname (*members-directory*) fn))
|
||||
(sl (if (symbolic-link? ffn) (read-symbolic-link ffn) #f)))
|
||||
(loop (cdr fns)
|
||||
(if sl
|
||||
(cons (cons fn sl) rs)
|
||||
rs))))))
|
||||
|
||||
;; Converts the raw members index to a list of dictionaries with keys
|
||||
;; 'id, 'name and 'file. File names are without directory element.
|
||||
(define (expand-members-raw-index ri)
|
||||
(let loop ((ri ri)
|
||||
(ds '()))
|
||||
(if (null? ri)
|
||||
ds
|
||||
(let* ((mp (car ri))
|
||||
(lnk (car mp))
|
||||
(dfn (cdr mp))
|
||||
(lnkn (string->number lnk))
|
||||
(dfnn (string->number dfn))
|
||||
(id (or dfnn lnkn))
|
||||
(name (if lnkn dfn lnk)))
|
||||
(loop (cdr ri)
|
||||
(cons (list (cons 'id id)
|
||||
(cons 'name name)
|
||||
(cons 'file dfn))
|
||||
ds))))))
|
||||
;; Member info data file
|
||||
|
||||
;; Parses given key-value line. Key is up to first space, value is the
|
||||
;; rest of the line. If the line doesn't contain anything, returns #f.
|
||||
|
@ -408,6 +372,71 @@
|
|||
(ls (read-lines f)))
|
||||
(parse-member-lines ls)))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; Members database
|
||||
|
||||
;; Loads all symlinks from (*members-directory*) returning a list of
|
||||
;; pairs (name . destination)
|
||||
(define (load-members-raw-index)
|
||||
(let loop ((fns (directory (*members-directory*)))
|
||||
(rs '()))
|
||||
(if (null? fns)
|
||||
rs
|
||||
(let* ((fn (car fns))
|
||||
(ffn (make-pathname (*members-directory*) fn))
|
||||
(sl (if (symbolic-link? ffn) (read-symbolic-link ffn) #f)))
|
||||
(loop (cdr fns)
|
||||
(if sl
|
||||
(cons (cons fn sl) rs)
|
||||
rs))))))
|
||||
|
||||
;; Converts the raw members index to a list of dictionaries with keys
|
||||
;; 'id, 'name and 'file. File names are without directory element.
|
||||
(define (expand-members-raw-index ri)
|
||||
(let loop ((ri ri)
|
||||
(ds '()))
|
||||
(if (null? ri)
|
||||
ds
|
||||
(let* ((mp (car ri))
|
||||
(lnk (car mp))
|
||||
(dfn (cdr mp))
|
||||
(lnkn (string->number lnk))
|
||||
(dfnn (string->number dfn))
|
||||
(id (or dfnn lnkn))
|
||||
(name (if lnkn dfn lnk)))
|
||||
(loop (cdr ri)
|
||||
(cons (list (cons 'id id)
|
||||
(cons 'name name)
|
||||
(cons 'file dfn))
|
||||
ds))))))
|
||||
|
||||
(define (load-members-from-expanded-index ei)
|
||||
(let loop ((ei ei)
|
||||
(mdb '()))
|
||||
(if (null? ei)
|
||||
mdb
|
||||
(let ((mi (car ei)))
|
||||
(print mi)
|
||||
(loop (cdr ei)
|
||||
(cons (dict-set mi
|
||||
'info
|
||||
(load-member-file (dict-ref mi 'file)))
|
||||
mdb))))))
|
||||
|
||||
;; Loads all member information from given members database.
|
||||
(define (load-members)
|
||||
(expand-members-raw-index
|
||||
(load-members-raw-index)))
|
||||
|
||||
(define (find-member-by-id mb id)
|
||||
#f)
|
||||
|
||||
(define (find-member-by-fname mb fname)
|
||||
#f)
|
||||
|
||||
(define (find-member-by-nick mb nick)
|
||||
#f)
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; Run everything
|
||||
|
||||
|
@ -424,6 +453,6 @@
|
|||
(newline)
|
||||
|
||||
;; Perform requested action
|
||||
;(print (expand-members-raw-index (load-members-raw-index)))
|
||||
(load-members-from-expanded-index (expand-members-raw-index (load-members-raw-index)))
|
||||
|
||||
(print (load-member-file "trimen"))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue