Added Interact.hs to make it easier to use ghci while developing.

Interact.hs loads ghci from the src directory, specifying
all the options needed to load pandoc modules (including
specific package dependencies, which it gets by parsing
dist/setup-config).
This commit is contained in:
John MacFarlane 2010-12-22 21:06:23 -08:00
parent c08ca6fa6d
commit b950503fd8

30
Interact.hs Normal file
View file

@ -0,0 +1,30 @@
-- Get an interactive shell with the right packages to load
-- pandoc modules.
-- To use:
-- runghc Interact.hs
-- then,
-- :l Text/Pandoc.hs
-- (or whichever package you like)
-- You must have first done a 'cabal configure' or 'cabal install'
import System.Process
import Distribution.Simple.LocalBuildInfo
import Distribution.Package
import Distribution.Version
import Data.List (intercalate)
main = do
setupConfig' <- readFile "dist/setup-config"
let setupConfig = read $ unlines $ drop 1 $ lines setupConfig'
let (Just (ComponentLocalBuildInfo { componentPackageDeps = deps })) = libraryConfig setupConfig
let packageSpecs = map (toPackageSpec . snd) deps
let args = ["-cpp","-i../dist/build/autogen"] ++ concatMap (\p -> ["-package",p]) packageSpecs
print args
ph <- runProcess "ghci" args (Just "src") Nothing Nothing Nothing Nothing
waitForProcess ph
toPackageSpec pkg = pkgN ++ "-" ++ pkgV
where (PackageName pkgN) = pkgName pkg
pkgV = intercalate "." $ map show $ versionBranch $ pkgVersion pkg