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
