haskell-packages 0.2.1 → 0.2.2
raw patch · 5 files changed
+43/−16 lines, 5 filesdep ~basedep ~mtlPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: base, mtl
API changes (from Hackage documentation)
+ Distribution.HaskellSuite.Modules: instance MonadCont m => MonadCont (ModuleT i m)
+ Distribution.HaskellSuite.Modules: instance MonadError e m => MonadError e (ModuleT i m)
+ Distribution.HaskellSuite.Modules: instance MonadReader r m => MonadReader r (ModuleT i m)
+ Distribution.HaskellSuite.Modules: instance MonadState s m => MonadState s (ModuleT i m)
+ Distribution.HaskellSuite.Modules: instance MonadWriter w m => MonadWriter w (ModuleT i m)
- Distribution.HaskellSuite.Compiler: class IsPackageDB (DB compiler) => Is compiler where type family DB compiler installLib t buildDir targetDir _dynlibTargetDir _pkg mods = findModuleFiles [buildDir] (fileExtensions t) mods >>= installOrdinaryFiles normal targetDir register t dbspec pkg = do { mbDb <- locateDB dbspec; case mbDb :: Maybe (DB compiler) of { Nothing -> throwIO RegisterNullDB Just db -> do { pkgs <- readPackageDB (maybeInitDB dbspec) db; let pkgid = installedPackageId pkg; writePackageDB db $ pkg : removePackage pkgid pkgs } } } unregister t dbspec pkg = do { let pkgCriterion = (case pkgVersion $ packageId pkg of { Version [] _ -> ((==) `on` pkgName) pkg _ -> (==) pkg }) . sourcePackageId; mbDb <- locateDB dbspec; case mbDb :: Maybe (DB compiler) of { Nothing -> throwIO RegisterNullDB Just db -> do { pkgs <- readPackageDB (maybeInitDB dbspec) db; let (packagesRemoved, packagesLeft) = partition pkgCriterion pkgs; if null packagesRemoved then putStrLn $ "No packages removed" else do { putStrLn "Packages removed:"; forM_ packagesRemoved $ \ p -> putStrLn $ " " ++ display (installedPackageId p) }; writePackageDB db packagesLeft } } } list t dbspec = do { mbDb <- locateDB dbspec; case mbDb :: Maybe (DB compiler) of { Nothing -> return () Just db -> do { pkgs <- readPackageDB (maybeInitDB dbspec) db; forM_ pkgs $ putStrLn . display . installedPackageId } } }
+ Distribution.HaskellSuite.Compiler: class IsPackageDB (DB compiler) => Is compiler where type family DB compiler installLib t buildDir targetDir _dynlibTargetDir _pkg mods = findModuleFiles [buildDir] (fileExtensions t) mods >>= installOrdinaryFiles normal targetDir register _tool dbspec pkg = do { mbDb <- locateDB dbspec; case mbDb :: Maybe (DB compiler) of { Nothing -> throwIO RegisterNullDB Just db -> do { pkgs <- readPackageDB (maybeInitDB dbspec) db; let pkgid = installedPackageId pkg; writePackageDB db $ pkg : removePackage pkgid pkgs } } } unregister _tool dbspec pkg = do { let pkgCriterion = (case pkgVersion $ packageId pkg of { Version [] _ -> ((==) `on` pkgName) pkg _ -> (==) pkg }) . sourcePackageId; mbDb <- locateDB dbspec; case mbDb :: Maybe (DB compiler) of { Nothing -> throwIO RegisterNullDB Just db -> do { pkgs <- readPackageDB (maybeInitDB dbspec) db; let (packagesRemoved, packagesLeft) = partition pkgCriterion pkgs; if null packagesRemoved then putStrLn $ "No packages removed" else do { putStrLn "Packages removed:"; forM_ packagesRemoved $ \ p -> putStrLn $ " " ++ display (installedPackageId p) }; writePackageDB db packagesLeft } } } list _tool dbspec = do { mbDb <- locateDB dbspec; case mbDb :: Maybe (DB compiler) of { Nothing -> return () Just db -> do { pkgs <- readPackageDB (maybeInitDB dbspec) db; forM_ pkgs $ putStrLn . display . installedPackageId } } }
Files
- haskell-packages.cabal +4/−3
- src/Distribution/HaskellSuite/Cabal.hs +3/−0
- src/Distribution/HaskellSuite/Compiler.hs +3/−4
- src/Distribution/HaskellSuite/Modules.hs +32/−9
- src/Distribution/HaskellSuite/Packages.hs +1/−0
haskell-packages.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/ name: haskell-packages-version: 0.2.1+version: 0.2.2 synopsis: Haskell suite library for package management and integration with Cabal description: See <http://documentup.com/haskell-suite/haskell-packages> license: MIT@@ -25,12 +25,13 @@ source-repository this type: git location: git://github.com/haskell-suite/haskell-packages.git- tag: v0.2.1+ tag: v0.2.2 library default-language: Haskell2010 Hs-source-dirs: src+ ghc-options: -Wall -fno-warn-name-shadowing exposed-modules: Distribution.HaskellSuite Distribution.HaskellSuite.Compiler@@ -49,7 +50,7 @@ , directory , filepath , containers- , mtl+ , mtl >= 2.1 , hse-cpp , EitherT , haskell-src-exts >= 1.14
src/Distribution/HaskellSuite/Cabal.hs view
@@ -165,7 +165,10 @@ show (ModuleNotFound mod) = printf "Module %s not found" mod instance Exception ModuleNotFound +findModules :: [FilePath] -> [String] -> IO [FilePath] findModules srcDirs = mapM (findModule srcDirs)++findModule :: [FilePath] -> String -> IO FilePath findModule srcDirs mod = do r <- runEitherT $ sequence_ (checkInDir <$> srcDirs <*> exts) case r of
src/Distribution/HaskellSuite/Compiler.hs view
@@ -33,7 +33,6 @@ import Distribution.ModuleName (ModuleName) import Control.Monad import Control.Exception-import Data.Maybe import Data.List import Data.Function import Language.Haskell.Exts.Annotated.CPP@@ -104,7 +103,7 @@ -> PackageDB -> InstalledPackageInfo -> IO ()- register t dbspec pkg = do+ register _tool dbspec pkg = do mbDb <- locateDB dbspec case mbDb :: Maybe (DB compiler) of@@ -120,7 +119,7 @@ -> PackageDB -> PackageId -> IO ()- unregister t dbspec pkg = do+ unregister _tool dbspec pkg = do let pkgCriterion = -- if the version is not specified, treat it as a wildcard@@ -155,7 +154,7 @@ :: compiler -> PackageDB -> IO ()- list t dbspec = do+ list _tool dbspec = do mbDb <- locateDB dbspec case mbDb :: Maybe (DB compiler) of
src/Distribution/HaskellSuite/Modules.hs view
@@ -1,6 +1,8 @@ {-# LANGUAGE GeneralizedNewtypeDeriving, TypeFamilies, FlexibleInstances, TypeSynonymInstances,- DeriveDataTypeable #-}+ DeriveDataTypeable, StandaloneDeriving,+ MultiParamTypeClasses, UndecidableInstances,+ ScopedTypeVariables #-} module Distribution.HaskellSuite.Modules ( -- * Module monad@@ -26,24 +28,20 @@ , ModName(..) , convertModuleName ) where- import Distribution.HaskellSuite.Packages-import Distribution.Simple.Compiler import Distribution.Simple.Utils import Distribution.InstalledPackageInfo-import Distribution.Package import Distribution.Text import Distribution.ModuleName import Control.Applicative import Control.Monad import Control.Monad.State+import Control.Monad.Cont+import Control.Monad.Error import Control.Monad.Reader-import Control.Exception+import Control.Monad.Writer import Data.List-import Data.Typeable-import Data.Proxy import qualified Data.Map as Map-import Text.Printf import System.FilePath -- | This class defines the interface that is used by 'getModuleInfo', so@@ -110,10 +108,11 @@ -- -- @i@ is the type of module info, @m@ is the underlying monad. newtype ModuleT i m a =- ModuleT+ ModuleT { unModuleT :: (StateT (Map.Map ModuleName i) (ReaderT (Packages, [FilePath] -> ModuleName -> m i) m) a)+ } deriving (Functor, Applicative, Monad) instance MonadTrans (ModuleT i) where@@ -129,6 +128,30 @@ getPackages = ModuleT $ asks fst readModuleInfo dirs mod = lift =<< ModuleT (asks snd) <*> pure dirs <*> pure (convertModuleName mod)++mapModuleT :: Monad m => (m a -> m b) -> ModuleT i m a -> ModuleT i m b+mapModuleT f m = ModuleT $ mapStateT (mapReaderT f') (unModuleT m)+ where+ f' ma = do+ (a,c) <- ma+ b <- f (return a)+ return (b,c)++instance MonadReader r m => MonadReader r (ModuleT i m) where+ ask = lift ask+ local = mapModuleT . local+ reader = lift . reader++instance MonadState s m => MonadState s (ModuleT i m) where+ get = lift get+ put = lift . put+ state = lift . state++deriving instance MonadWriter w m => MonadWriter w (ModuleT i m)++deriving instance MonadError e m => MonadError e (ModuleT i m)++deriving instance MonadCont m => MonadCont (ModuleT i m) -- | Run a 'ModuleT' action runModuleT
src/Distribution/HaskellSuite/Packages.hs view
@@ -1,5 +1,6 @@ {-# LANGUAGE GeneralizedNewtypeDeriving, DeriveDataTypeable, TemplateHaskell, ScopedTypeVariables, OverloadedStrings #-}+{-# OPTIONS_GHC -fno-warn-orphans #-} module Distribution.HaskellSuite.Packages ( -- * Querying package databases