[commit: Cabal] master: cabal list now only shows one line per package, with a list of verions. (8c38e5a)
Ian Lynagh
igloo at earth.li
Fri Jun 24 01:47:23 CEST 2011
Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/8c38e5abdb5884bb104519f55ed137aad8c20164
>---------------------------------------------------------------
commit 8c38e5abdb5884bb104519f55ed137aad8c20164
Author: bjorn <bjorn at bringert.net>
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) ' ')
More information about the Cvs-libraries
mailing list