Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/8c38e5abdb5884bb104519f55ed137aad8c20164

>---------------------------------------------------------------

commit 8c38e5abdb5884bb104519f55ed137aad8c20164
Author: bjorn <[email protected]>
Date:   Sat Oct 13 12:58:01 2007 +0000

    cabal list now only shows one line per package, with a list of verions.

>---------------------------------------------------------------

 cabal-install/Hackage/List.hs |   16 ++++++++++------
 1 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/cabal-install/Hackage/List.hs b/cabal-install/Hackage/List.hs
index 4060fe6..1a819d9 100644
--- a/cabal-install/Hackage/List.hs
+++ b/cabal-install/Hackage/List.hs
@@ -16,13 +16,14 @@ module Hackage.List
 
 import Text.Regex
 import Data.Maybe (isJust)
-import Data.List (nubBy, sortBy)
+import Data.List (nubBy, sortBy, groupBy, intersperse)
 import Data.Char as Char (toLower)
 import Data.Ord  (comparing)
 import Distribution.Package
 import Distribution.PackageDescription
+import Distribution.Version (showVersion)
 import Hackage.Config (getKnownPackages)
-import Hackage.Types (PkgInfo(..), ConfigFlags(..), {- 
UnresolvedDependency(..)-} )
+import Hackage.Types (PkgInfo(..), pkgInfoId, ConfigFlags(..), {- 
UnresolvedDependency(..)-} )
 
 -- |Show information about packages
 list :: ConfigFlags -> [String] -> IO ()
@@ -30,7 +31,7 @@ list cfg pats = do
     pkgs <- getKnownPackages cfg
     let pkgs' | null pats = pkgs
               | otherwise = nubBy samePackage (concatMap (findInPkgs pkgs) 
pats)
-    mapM_ doList (sortBy (comparing nameAndVersion) pkgs')
+    mapM_ doList (groupBy sameName (sortBy (comparing nameAndVersion) pkgs'))
     where
     findInPkgs :: [PkgInfo] -> String -> [PkgInfo]
     findInPkgs pkgs pat = let rx = mkRegexWithOpts pat False False in
@@ -43,12 +44,15 @@ list cfg pats = do
               name = pkgName (package d)
               version = pkgVersion (package d)
     samePackage a b = nameAndVersion a == nameAndVersion b
+    sameName a b = pkgName (pkgInfoId a) == pkgName (pkgInfoId b)
 
-doList :: PkgInfo -> IO ()
-doList info = do   
-    putStr . (if null syn then id else padTo 25) . showPackageId . package $ d
+doList :: [PkgInfo] -> IO ()
+doList ps = do   
+    putStr $ padTo 35 $ pkgName (package d) ++ " [" ++ concat (intersperse "," 
versions) ++ "]"
     putStrLn syn
     where
+    info = last ps
     d = packageDescription (pkgDesc info)
     syn = synopsis d
+    versions = map (showVersion . pkgVersion . package . packageDescription . 
pkgDesc) ps
     padTo n s = s ++ (replicate (n - length s) ' ')



_______________________________________________
Cvs-libraries mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-libraries

Reply via email to