~ chicken-core (chicken-5) 621c8b764e6c26f197c52cffae5d210563253692
commit 621c8b764e6c26f197c52cffae5d210563253692 Author: felix <felix@call-with-current-continuation.org> AuthorDate: Thu Apr 21 21:48:44 2011 +0200 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Thu Apr 21 21:48:44 2011 +0200 chicken-status -list diff --git a/chicken-status.scm b/chicken-status.scm index 9f56cd15..d1bffed4 100644 --- a/chicken-status.scm +++ b/chicken-status.scm @@ -31,7 +31,7 @@ (import scheme chicken foreign) (import srfi-1 posix data-structures utils ports irregex - files setup-api) + files setup-api extras) (define-foreign-variable C_TARGET_LIB_HOME c-string) (define-foreign-variable C_BINARY_VERSION int) @@ -49,12 +49,14 @@ (filter (cut irregex-search rx <>) lst)) (define (gather-eggs patterns) - (let ((eggs (map pathname-file - (glob (make-pathname (repo-path) "*" "setup-info"))))) + (let ((eggs (gather-all-eggs))) (delete-duplicates (concatenate (map (cut grep <> eggs) patterns)) string=?))) + (define (gather-all-eggs) + (map pathname-file (glob (make-pathname (repo-path) "*" "setup-info")))) + (define (format-string str cols #!optional right (padc #\space)) (let* ((len (string-length str)) (pad (make-string (fxmax 0 (fx- cols len)) padc)) ) @@ -100,6 +102,13 @@ eggs) string<?))) + (define (dump-installed-versions) + (for-each + (lambda (egg) + (let ((version (assq 'version (read-info egg (repo-path))))) + (pp (list egg (and version (cadr version)))))) + (gather-all-eggs))) + (define (usage code) (print #<<EOF usage: chicken-status [OPTION | PATTERN] ... @@ -110,6 +119,7 @@ usage: chicken-status [OPTION | PATTERN] ... -exact treat PATTERN as exact match (not a pattern) -host when cross-compiling, show status of host extensions only -target when cross-compiling, show status of target extensions only + -list dump installed eggs and their versions in "override" format EOF );| (exit code)) @@ -118,6 +128,7 @@ EOF (define (main args) (let ((files #f) + (dump #f) (exact #f)) (let loop ((args args) (pats '())) (if (null? args) @@ -136,7 +147,8 @@ EOF (print "(none)") ((if files list-installed-files list-installed-eggs) eggs)))))) - (cond ((and *host-extensions* *target-extensions*) + (cond (dump (dump-installed-versions)) + ((and *host-extensions* *target-extensions*) (print "host at " (repo-path) ":\n") (status) (fluid-let ((*host-extensions* #f)) @@ -157,6 +169,9 @@ EOF ((string=? arg "-exact") (set! exact #t) (loop (cdr args) pats)) + ((string=? arg "-list") + (set! dump #t) + (loop (cdr args) pats)) ((or (string=? arg "-f") (string=? arg "-files")) (set! files #t) (loop (cdr args) pats))Trap