[commit: Cabal] master: Add Utils module, tidy imports (75750a2)
Ian Lynagh
igloo at earth.li
Fri Jun 24 01:49:40 CEST 2011
Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/75750a2b38350f751eb4d6d47e4eeb5d3df9d1d8
>---------------------------------------------------------------
commit 75750a2b38350f751eb4d6d47e4eeb5d3df9d1d8
Author: Duncan Coutts <duncan at haskell.org>
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
More information about the Cvs-libraries
mailing list