Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal On branch : master
http://hackage.haskell.org/trac/ghc/changeset/d5c278cfdee23fbfd3dac78307931d9554599895 >--------------------------------------------------------------- commit d5c278cfdee23fbfd3dac78307931d9554599895 Author: Duncan Coutts <[email protected]> Date: Thu Jan 17 17:57:09 2008 +0000 Add Utils module, tidy imports >--------------------------------------------------------------- cabal-install/Hackage/ParseUtils.hs | 8 ++------ cabal-install/Hackage/Utils.hs | 32 ++++++++++++++++++++++++++++++++ cabal-install/cabal-install.cabal | 1 + 3 files changed, 35 insertions(+), 6 deletions(-) diff --git a/cabal-install/Hackage/ParseUtils.hs b/cabal-install/Hackage/ParseUtils.hs index 7d2cad9..8e621ab 100644 --- a/cabal-install/Hackage/ParseUtils.hs +++ b/cabal-install/Hackage/ParseUtils.hs @@ -4,17 +4,13 @@ import Distribution.Compat.ReadP (ReadP, readP_to_S, pfail, get, look, choice, ( import Distribution.Package (PackageIdentifier(..), parsePackageId) import Distribution.ParseUtils (Field(..), FieldDescr(..), ParseResult(..), PError - , field, liftField, readFields - , showDependency, parseDependency + , field, liftField, readFields, parseDependency , warning, lineNo, locatedErrorMsg) import Distribution.Version (Version(..), Dependency(..), VersionRange(..)) -import Control.Exception -import Control.Monad (foldM, liftM, guard) +import Control.Monad (foldM, liftM) import Data.Char (isSpace, toLower) -import Data.List (intersperse) import Data.Maybe (listToMaybe) -import System.IO.Error (isDoesNotExistError) import Text.PrettyPrint.HughesPJ (Doc, render, vcat, text, (<>), (<+>)) diff --git a/cabal-install/Hackage/Utils.hs b/cabal-install/Hackage/Utils.hs new file mode 100644 index 0000000..8bd7e45 --- /dev/null +++ b/cabal-install/Hackage/Utils.hs @@ -0,0 +1,32 @@ +module Hackage.Utils where + +import Distribution.ParseUtils (showDependency) +import Distribution.Version (Dependency(..)) + +import Control.Exception +import Control.Monad (guard) +import qualified Data.Char as Char (toLower) +import Data.List (intersperse) +import System.IO.Error (isDoesNotExistError) + +readFileIfExists :: FilePath -> IO (Maybe String) +readFileIfExists path = + catchJust fileNotFoundExceptions + (fmap Just (readFile path)) + (\_ -> return Nothing) + +fileNotFoundExceptions :: Exception -> Maybe IOError +fileNotFoundExceptions e = + ioErrors e >>= \ioe -> guard (isDoesNotExistError ioe) >> return ioe + +showDependencies :: [Dependency] -> String +showDependencies = concat . intersperse ", " . map (show . showDependency) + +equating :: Eq a => (b -> a) -> b -> b -> Bool +equating p x y = p x == p y + +comparing :: Ord a => (b -> a) -> b -> b -> Ordering +comparing p x y = p x `compare` p y + +lowercase :: String -> String +lowercase = map Char.toLower diff --git a/cabal-install/cabal-install.cabal b/cabal-install/cabal-install.cabal index 5e8476d..7f3ece5 100644 --- a/cabal-install/cabal-install.cabal +++ b/cabal-install/cabal-install.cabal @@ -42,6 +42,7 @@ Executable cabal Hackage.Info Hackage.Install Hackage.List + Hackage.ParseUtils Hackage.Setup Hackage.Tar Hackage.Types _______________________________________________ Cvs-libraries mailing list [email protected] http://www.haskell.org/mailman/listinfo/cvs-libraries
