Switched to extensible-exceptions. Got rid of haskell98-style nonhierarchical imports.
authorSergei Trofimovich <slyfox@gentoo.org>
Sun, 24 Jul 2011 11:09:24 +0000 (24 14:09 +0300)
committerSergei Trofimovich <slyfox@gentoo.org>
Sun, 24 Jul 2011 11:13:20 +0000 (24 14:13 +0300)
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
19 files changed:
.gitignore
Adelie/Colour.hs
Adelie/CompareVersion.hs
Adelie/Contents.hs
Adelie/Error.hs [new file with mode: 0644]
Adelie/ListEx.hs
Adelie/Options.hs
Adelie/Provide.hs
Adelie/QChangelog.hs
Adelie/QCheck.hs
Adelie/QHasUse.hs
Adelie/QOwn.hs
Adelie/QSize.hs
Adelie/QUse.hs
Adelie/Use.hs
Adelie/UseDesc.hs
Main.hs
TODO
fquery.cabal

index 3d64674..24f207a 100644 (file)
@@ -1,2 +1,2 @@
 Adelie/Config.hs
-dist
\ No newline at end of file
+dist
index c9b88b5..3599962 100644 (file)
@@ -15,7 +15,7 @@ module Adelie.Colour (
     off2
 ) where
 
-import Monad (when)
+import Control.Monad (when)
 
 import Adelie.Options
 
index 91da3ba..914894d 100644 (file)
@@ -4,7 +4,7 @@
 
 module Adelie.CompareVersion (compareVersion) where
 
-import Char (isDigit)
+import Data.Char (isDigit)
 
 import Adelie.ListEx (digitsToInt)
 
index 08495bb..04bfde9 100644 (file)
@@ -11,8 +11,9 @@ module Adelie.Contents (
   readContents
 ) where
 
-import Char (isDigit, isHexDigit, isSpace)
-import IO
+import Data.Char (isDigit, isHexDigit, isSpace)
+import qualified Adelie.Error as E
+import System.IO
 
 import Adelie.Colour
 import Adelie.ListEx
@@ -33,15 +34,15 @@ contentsFromCatName (cat, name) = concatPath [portageDB,cat,name,"CONTENTS"]
 
 readContents :: (Contents -> a -> IO (Bool, a)) -> FilePath -> a -> IO a
 readContents f fn a = do
-  r <- try read'
+  r <- E.try read'
   case r of
     Left  _  -> return a
     Right a' -> return a'
   where
     read' =
-      bracket (openFile fn ReadMode)
-              hClose
-              (readContents' f a)
+      E.bracket (openFile fn ReadMode)
+                hClose
+                (readContents' f a)
 
 readContents' :: (Contents -> a -> IO (Bool, a)) -> a -> Handle -> IO a
 readContents' f a fp = do
diff --git a/Adelie/Error.hs b/Adelie/Error.hs
new file mode 100644 (file)
index 0000000..3bf0c2f
--- /dev/null
@@ -0,0 +1,15 @@
+-- Module to wrap all exception code
+-- TODO: distinct different kinds of error in own datatype
+
+module Adelie.Error
+    ( try
+    , bracket
+) where
+
+import qualified Control.Exception.Extensible as E
+
+try :: IO a -> IO (Either E.SomeException a)
+try = E.try
+
+bracket :: IO a -> (a -> IO b) -> (a -> IO c) -> IO c
+bracket = E.bracket
index 2bf6e00..1f3c910 100644 (file)
@@ -12,9 +12,9 @@ module Adelie.ListEx (
   pad
 ) where
 
-import Char       (digitToInt)
-import Data.List  (foldl')
-import Monad      (liftM)
+import Data.Char (digitToInt)
+import Data.List (foldl')
+import Control.Monad (liftM)
 
 ----------------------------------------------------------------
 
index 3a26dfd..46e6f9b 100644 (file)
@@ -1,5 +1,4 @@
-{-# OPTIONS -fglasgow-exts #-}
-
+{-# LANGUAGE ForeignFunctionInterface #-}
 -- Options.hs
 --
 -- We keep some globals in C so we don't have to pass them around everywhere.
index c6b3c93..d3274a0 100644 (file)
@@ -7,7 +7,7 @@ module Adelie.Provide (
   readProvide
 ) where
 
-import Monad (liftM)
+import Control.Monad (liftM)
 
 import Adelie.Portage
 
index ac5219b..4b759b9 100644 (file)
@@ -7,8 +7,8 @@ module Adelie.QChangelog (
   qLogFile
 ) where
 
-import Char   (isDigit, isSpace)
-import Monad  (unless)
+import Data.Char (isDigit, isSpace)
+import Control.Monad (unless)
 
 import Adelie.Colour
 import Adelie.CompareVersion
index 12d34b8..969300f 100644 (file)
@@ -4,8 +4,8 @@
 
 module Adelie.QCheck (qCheck) where
 
-import Char               (isHexDigit)
-import IO
+import Data.Char          (isHexDigit)
+import System.IO
 
 import System.Process     (runProcess, waitForProcess, ProcessHandle)
 import System.Posix.Files (getFileStatus)
@@ -13,6 +13,7 @@ import System.Posix.IO    (createPipe, fdToHandle)
 
 import Adelie.Colour
 import Adelie.Contents
+import qualified Adelie.Error as E
 import Adelie.Portage
 import Adelie.Pretty
 
@@ -37,7 +38,7 @@ check' :: Contents -> Count -> IO (Bool, Count)
 check' (Dir _) (g, b) = return (False, (g+1, b))
 
 check' (Obj o m _) (g, b) = do
-  r <- try (getFileStatus o)
+  r <- E.try (getFileStatus o)
   case r of
     Left _e -> do
       inRed (putStr "!!! ") >> putStr o >> putStrLn " does not exist"
index af6cd4f..b37d749 100644 (file)
@@ -4,7 +4,7 @@
 
 module Adelie.QHasUse (qHasUse) where
 
-import Monad (when)
+import Control.Monad (when)
 
 import Adelie.Colour
 import Adelie.Portage
index 9bb776f..204cbe2 100644 (file)
@@ -7,8 +7,8 @@ module Adelie.QOwn (
   qOwnRegex
 ) where
 
-import List       (delete)
-import Monad      (when)
+import Data.List (delete)
+import Control.Monad (when)
 import Text.Regex (Regex, matchRegex, mkRegex)
 
 import Adelie.Contents
index 9f7d383..65fa8bb 100644 (file)
@@ -4,14 +4,14 @@
 
 module Adelie.QSize (qSize) where
 
-import Directory            (doesDirectoryExist)
-import IO                   (try)
-import Monad                (mapM_, when)
+import System.Directory     (doesDirectoryExist)
+import Control.Monad        (when)
 import System.Posix.Files   (fileSize, getFileStatus)
 import System.Posix.Types   (FileOffset)
 
 import Adelie.Colour
 import Adelie.Contents
+import qualified Adelie.Error as E
 import Adelie.Portage
 import Adelie.Pretty
 
@@ -48,7 +48,7 @@ count (Dir d) (s,w,x,y,z) = do
     else return (False, (s,w,x,y,z+1)) 
 
 count (Obj o _ _) (s,w,x,y,z) = do
-  r <- try (getFileStatus o)
+  r <- E.try (getFileStatus o)
   case r of
     Left _err -> return (False, (s, w, x, y, z+1))
     Right st -> return (False, (s+fileSize st, w, x+1, y, z))
index 55e738b..9230862 100644 (file)
@@ -5,7 +5,7 @@
 module Adelie.QUse (qUse) where
 
 import Data.HashTable as HashTable
-import Monad (mapM_, unless)
+import Control.Monad (unless)
 
 import Adelie.Colour
 import Adelie.ListEx
index 2f4821b..3967565 100644 (file)
@@ -10,8 +10,8 @@ module Adelie.Use (
   readIUse
 ) where
 
-import List   (nub, sort)
-import Monad  (liftM)
+import Data.List (nub, sort)
+import Control.Monad (liftM)
 
 import Adelie.Portage
 
index 1e1bb4a..ace7776 100644 (file)
@@ -8,9 +8,9 @@ module Adelie.UseDesc (
   readUseDescPackage
 ) where
 
-import Char (isSpace)
+import Data.Char (isSpace)
 import Data.HashTable as HashTable
-import Monad (when)
+import Control.Monad (when)
 
 import Adelie.ListEx
 import Adelie.Portage
diff --git a/Main.hs b/Main.hs
index d64ce55..1cb6a78 100755 (executable)
--- a/Main.hs
+++ b/Main.hs
@@ -4,7 +4,7 @@
 
 module Main (main) where
 
-import System (getArgs, getProgName)
+import System.Environment (getArgs, getProgName)
 
 import Adelie.Colour
 import Adelie.Options
diff --git a/TODO b/TODO
index 298a268..ddae806 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,4 +1,4 @@
  * make fquery a drop-in replacement of equery:
-    o outpout compatible
-    o options full
- * explore attoparsec in search of faster performance
+    o output compatible
+    o option complete
+ * explore attoparsec/alex in search of faster performance
index 9e9149c..144eb9c 100644 (file)
@@ -1,9 +1,9 @@
 Name:          fquery
-Version:       0.2.1.2
+Version:       0.2.1.3
 
 Author:                David Wang <millimillenary@gmail.com>, Sergei Trofimovich <slyfox@inbox.ru>
 Maintainer:    Sergei Trofimovich <slyfox@inbox.ru>
-Copyright:     2006 David Wang, 2009 Sergei Trofimovich
+Copyright:     2006 David Wang, 2009-2011 Sergei Trofimovich
 
 License-File:  LICENCE.txt
 License:       OtherLicense
@@ -18,7 +18,13 @@ Description: Installed package query tool for Gentoo Linux
 Category:      Gentoo
 
 Build-Type:    Configure
-Build-Depends: base >= 2 && < 5, haskell98, parsec, unix, regex-compat, process, directory
+Build-Depends: base >= 2 && < 5,
+               directory,
+               extensible-exceptions,
+               parsec,
+               process,
+               regex-compat,
+               unix
 
 Extra-Source-Files:
                configure
@@ -32,6 +38,7 @@ Other-Modules:        Adelie.Colour
                Adelie.CompareVersion
                Adelie.Contents
                Adelie.Depend
+               Adelie.Error
                Adelie.ListEx
                Adelie.Options
                Adelie.Portage