packages feed

cabal-ghci-0.3: CabalGHCI.hs

module Main where

import Distribution.Dev.Interactive

import System.Environment
import System.Process

opt0 opt args = f [] args
     where f r (x:xs)
             | x == ("--cabal-ghci-" ++ opt) = (reverse r ++ xs, True)
             | otherwise = f (x:r) xs
           f _ _ = (args, False)

main = do
    args ← getArgs
    let (args', pretend) = opt0 "print-ghci-args" args
    withOpts args' errCont $
        if pretend then mapM_ putStrLn
        else \opts → do
          putStrLn $ "Executing ghci with the following options: " ++ unwords opts
          rawSystem "ghci" opts >> return ()
  where
    errCont "Current directory is not a cabal project" = do
          putStrLn "WARNING: no .cabal file found, falling back to default GHCi session & ignoring any passed args"
          rawSystem "ghci" []
          return ()
    errCont msg = putStrLn msg