pandoc/Interact.hs
John MacFarlane b950503fd8 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).
2010-12-22 21:06:23 -08:00

30 lines
1 KiB
Haskell

-- 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