ursetto/egg-licenses
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
;; author Jim Ursetto license MIT (use setup-download) (define (licenses eggs repo-info) (pp (query-dependency-graph eggs repo-info (lambda (egg egg-info) (if egg-info `(,egg ,@(cond ((license egg-info) => (lambda (x) `((license ,x)))) (else '())) ,@(let ((needs (needs egg-info))) (if (pair? needs) `((needs . ,needs)) '()))) `(,egg ?)))))) ;;;kv access (define (license egg-info) (cond ((alist-ref 'license egg-info) => car) (else #f))) (define (deps key egg-info) (cond ((alist-ref key egg-info) => (lambda (n) (map (lambda (e) (if (pair? e) (car e) e)) n))) (else '()))) (define (needs egg-info) (append (deps 'needs egg-info) (deps 'depends egg-info))) ;;;dep graph (define (needs-dag egg repo-info) (let ((n (needs (alist-ref egg repo-info)))) (cons (cons egg n) (append-map (lambda (x) (needs-dag x repo-info)) n)))) (define (dependency-graph egg repo-info) (topological-sort (needs-dag egg repo-info) eq?)) (define (query-dependency-graph eggs repo-info proc) (map (lambda (egg) (let ((egg-info (alist-ref egg repo-info))) (proc egg egg-info))) (cdr (dependency-graph '*QUERY* `((*QUERY* (needs . ,eggs)) . ,repo-info))))) ;;; main (when (< (length (command-line-arguments)) 1) (fprintf (current-error-port) "usage: ~a <path-to-chicken-repo> <egg> [<egg> ...]\n" (program-name)) (exit 1)) (set! *repo-info* (gather-egg-information (car (command-line-arguments)))) (licenses (map string->symbol (cdr (command-line-arguments))) *repo-info*)
About
outputs sxml describing licensing of dependency graph of eggs
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published