cabal-dev-0.9.2: src/Distribution/Dev/Ghci.hs
module Distribution.Dev.Ghci
( actions )
where
import Distribution.Simple.Program ( emptyProgramConfiguration
, runProgram
, requireProgram
, ghcProgram
)
import System.Console.GetOpt ( OptDescr )
import Distribution.Dev.Command ( CommandActions(..), CommandResult(..) )
import Distribution.Dev.Flags ( Config, getVerbosity )
import Distribution.Dev.BuildOpts ( getBuildArgs )
actions :: CommandActions
actions = CommandActions
{ cmdDesc = "Run ghci configured as per the specified cabal file."
, cmdRun = \cfg _ args -> invokeGhci cfg args
, cmdOpts = [] :: [OptDescr ()]
, cmdPassFlags = True
}
invokeGhci :: Config -> [String] -> IO CommandResult
invokeGhci cfg args = do
let v = getVerbosity cfg
res <- getBuildArgs cfg args
case res of
Left err -> return $ CommandError err
Right (buildArgs:_) ->
do -- Use the arguments that cabal-install passed to GHC to
-- invoke ghci instead
let ghciArgs = "--interactive"
: filter (not . (`elem` ["--make", "-O"])) buildArgs
(ghc, _) <- requireProgram v ghcProgram emptyProgramConfiguration
runProgram v ghc ghciArgs
return CommandOk
Right [] -> return $ CommandError "Failed to extract GHC build arguments"