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

Reply via email to