[commit: Cabal] master: List packages in name and version order (case-insensitively) (f2c9010)
Ian Lynagh
igloo at earth.li
Fri Jun 24 01:44:09 CEST 2011
Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/f2c901019e9828f82fc91cd126bc466de3e36c5c
>---------------------------------------------------------------
commit f2c901019e9828f82fc91cd126bc466de3e36c5c
Author: Duncan Coutts <duncan.coutts at worc.ox.ac.uk>
Date: Thu May 3 16:21:17 2007 +0000
List packages in name and version order (case-insensitively)
>---------------------------------------------------------------
.../src/Network/Hackage/CabalInstall/List.hs | 11 +++++++++--
1 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/cabal-install/src/Network/Hackage/CabalInstall/List.hs b/cabal-install/src/Network/Hackage/CabalInstall/List.hs
index 985cec0..dbdc293 100644
--- a/cabal-install/src/Network/Hackage/CabalInstall/List.hs
+++ b/cabal-install/src/Network/Hackage/CabalInstall/List.hs
@@ -16,7 +16,9 @@ module Network.Hackage.CabalInstall.List
import Text.Regex
import Data.Maybe (catMaybes, isJust)
-import Data.List (find, nub)
+import Data.List (find, nub, sortBy)
+import Data.Char as Char (toLower)
+import Data.Ord (comparing)
import Distribution.Package
import Distribution.PackageDescription
import Network.Hackage.CabalInstall.Config (getKnownPackages)
@@ -27,13 +29,18 @@ import Network.Hackage.CabalInstall.Types (PkgInfo(..), ConfigFlags(..), Unresol
list :: ConfigFlags -> [String] -> IO ()
list cfg pats = do
pkgs <- getKnownPackages cfg
- mapM_ doList $ if null pats then pkgs else nub (concatMap (findInPkgs pkgs) pats)
+ let pkgs' | null pats = pkgs
+ | otherwise = nub (concatMap (findInPkgs pkgs) pats)
+ mapM_ doList (sortBy (comparing nameAndVersion) pkgs')
where
findInPkgs :: [PkgInfo] -> String -> [PkgInfo]
findInPkgs pkgs pat = let rx = mkRegexWithOpts pat False False in
filter (isJust . matchRegex rx . showInfo) pkgs
showInfo :: PkgInfo -> String
showInfo pkg = showPackageId (infoId pkg) ++ "\n" ++ infoSynopsis pkg
+ nameAndVersion PkgInfo { infoId =
+ PackageIdentifier { pkgName = name, pkgVersion = version }
+ } = (map Char.toLower name, name, version)
doList :: PkgInfo -> IO ()
doList info = do
More information about the Cvs-libraries
mailing list