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:
parent
c08ca6fa6d
commit
b950503fd8
1 changed files with 30 additions and 0 deletions
30
Interact.hs
Normal file
30
Interact.hs
Normal 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
|
Loading…
Reference in a new issue