From bc8bb400a13ccf191f75579bc16f9e3052563e02 Mon Sep 17 00:00:00 2001 From: Mikhail Glushenkov <mikhail.glushenkov@gmail.com> Date: Wed, 15 May 2013 18:54:03 +0200 Subject: [PATCH] Add a function for listing packages installed in a sandbox. --- cabal-install/Distribution/Client/Sandbox.hs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/cabal-install/Distribution/Client/Sandbox.hs b/cabal-install/Distribution/Client/Sandbox.hs index 16495aaeff..7aa1adc120 100644 --- a/cabal-install/Distribution/Client/Sandbox.hs +++ b/cabal-install/Distribution/Client/Sandbox.hs @@ -29,6 +29,7 @@ module Distribution.Client.Sandbox ( tryGetIndexFilePath, sandboxBuildDir, + getInstalledPackagesInSandbox, -- FIXME: move somewhere else configPackageDB', configCompilerAux' @@ -69,7 +70,8 @@ import Distribution.PackageDescription.Parse ( readPackageDescription ) import Distribution.Simple.Compiler ( Compiler(..), PackageDB(..) , PackageDBStack ) import Distribution.Simple.Configure ( configCompilerAux - , interpretPackageDbFlags ) + , interpretPackageDbFlags + , getPackageDBContents ) import Distribution.Simple.PreProcess ( knownSuffixHandlers ) import Distribution.Simple.Program ( ProgramConfiguration ) import Distribution.Simple.Setup ( Flag(..) @@ -86,6 +88,7 @@ import Distribution.Verbosity ( Verbosity, lessVerbose ) import Distribution.Compat.Env ( lookupEnv, setEnv ) import Distribution.Compat.FilePerms ( setFileHidden ) import qualified Distribution.Client.Sandbox.Index as Index +import qualified Distribution.Simple.PackageIndex as InstalledPackageIndex import qualified Distribution.Simple.Register as Register import Control.Exception ( assert, bracket_ ) import Control.Monad ( forM, liftM2, unless, when ) @@ -177,6 +180,14 @@ tryGetIndexFilePath config = do checkConfiguration = "Please check your configuration ('" ++ userPackageEnvironmentFile ++ "')." +-- | Which packages are installed in the sandbox package DB? +getInstalledPackagesInSandbox :: Verbosity -> ConfigFlags + -> Compiler -> ProgramConfiguration + -> IO InstalledPackageIndex.PackageIndex +getInstalledPackagesInSandbox verbosity configFlags comp conf = do + let [Just sandboxDB@(SpecificPackageDB _)] = configPackageDBs configFlags + getPackageDBContents verbosity comp sandboxDB conf + -- | Temporarily add $SANDBOX_DIR/bin to $PATH. withSandboxBinDirOnSearchPath :: FilePath -> IO a -> IO a withSandboxBinDirOnSearchPath sandboxDir = bracket_ addBinDir rmBinDir -- GitLab