~ chicken-core (chicken-5) 4ebabf80db35ce23ce99fd72caa8e0dc7f112609


commit 4ebabf80db35ce23ce99fd72caa8e0dc7f112609
Author:     Evan Hanson <evhan@thunktastic.com>
AuthorDate: Wed Dec 7 18:03:46 2011 -0600
Commit:     Christian Kellermann <ckeen@pestilenz.org>
CommitDate: Sat Dec 10 11:07:50 2011 +0100

    -show-depends flag for chicken-install
    
    This option fetches and displays egg dependencies,
    to accompany -show-foreign-depends.
    
    Signed-off-by: Christian Kellermann <ckeen@pestilenz.org>
    Signed-off-by: Moritz Heidkamp <moritz@twoticketsplease.de>

diff --git a/chicken-install.scm b/chicken-install.scm
index c01ac4dc..f8c39589 100644
--- a/chicken-install.scm
+++ b/chicken-install.scm
@@ -107,6 +107,7 @@
   (define *keep-going* #f)
   (define *override* '())
   (define *reinstall* #f)
+  (define *show-depends* #f)
   (define *show-foreign-depends* #f)
   (define *hacks* '())
 
@@ -400,21 +401,26 @@
 	    ((pair? egg) (cdr egg))
 	    (else #f))))
 
-  (define (show-foreign-depends eggs)
+  (define (show-depends eggs . type)
     (print "fetching meta information...")
     (retrieve eggs)
-    (print "Foreign dependencies as reported in .meta:")
-    (for-each
-     (lambda (egg)
-       (and-let* ((meta-file (make-pathname (cadr egg) (car egg) "meta"))
-                  (m (and (file-exists? meta-file) (with-input-from-file meta-file read)))
-                  (ds (deps 'foreign-depends m)))
-         (unless (null? ds)
-           (print (car egg) ": ")
-           (for-each (cut print "\t" <>) (deps 'foreign-depends m)))))
-     *eggs+dirs+vers*)
-    (cleanup)
-    (exit 0))
+    (let ((type (optional type 'depends)))
+      (printf "~a dependencies as reported in .meta:\n"
+	      (case type ((depends) "Egg")
+			 ((foreign-depends) "Foreign")))
+      (for-each
+       (lambda (egg)
+	 (and-let* ((meta-file (make-pathname (cadr egg) (car egg) "meta"))
+		    (m (and (file-exists? meta-file) (with-input-from-file meta-file read)))
+		    (ds (if (eq? type 'depends)
+			  (append (deps 'needs m) (deps type m))
+			  (deps type m))))
+	   (unless (null? ds)
+	     (print (car egg) ": ")
+	     (for-each (cut print "\t" <>) ds))))
+       *eggs+dirs+vers*)
+      (cleanup)
+      (exit 0)))
 
   (define (retrieve eggs)
     (print "retrieving ...")
@@ -775,6 +781,7 @@ usage: chicken-install [OPTION | EXTENSION[:VERSION]] ...
        -scan DIRECTORY          scan local directory for highest available egg versions
        -override FILENAME       override versions for installed eggs with information from file
        -csi FILENAME            use given pathname for invocations of "csi"
+       -show-depends            display a list of egg dependencies for the given egg(s)
        -show-foreign-depends    display a list of foreign dependencies for the given egg(s)
 
 chicken-install recognizes the http_proxy, and proxy_auth environment variables, if set.
@@ -852,8 +859,10 @@ EOF
                                (display
                                 (list-available-extensions
                                  *default-transport* *default-location*)))
+                              (*show-depends*
+                               (show-depends eggs 'depends))
                               (*show-foreign-depends*
-                               (show-foreign-depends eggs))
+                               (show-depends eggs 'foreign-depends))
                               (else
                                (install (apply-mappings (reverse eggs)))))
                         ))))
@@ -973,6 +982,9 @@ EOF
                         (unless (pair? (cdr args)) (usage 1))
                         (set! *password* (cadr args))
                         (loop (cddr args) eggs))
+		       ((string=? "-show-depends" arg)
+                        (set! *show-depends* #t)
+                        (loop (cdr args) eggs))
                        ((string=? "-show-foreign-depends" arg)
                         (set! *show-foreign-depends* #t)
                         (loop (cdr args) eggs))
Trap