module Hhp.PkgDoc (packageDoc) where
import System.Process (readProcess)
import Hhp.Types
import Hhp.GhcPkg
packageDoc :: Options
-> Cradle
-> ModuleString
-> IO String
packageDoc :: Options -> Cradle -> [Char] -> IO [Char]
packageDoc Options
_ Cradle
cradle [Char]
mdl = Cradle -> [Char] -> IO [Char]
pkgDoc Cradle
cradle [Char]
mdl
pkgDoc :: Cradle -> String -> IO String
pkgDoc :: Cradle -> [Char] -> IO [Char]
pkgDoc Cradle
cradle [Char]
mdl = do
[Char]
pkg <- [Char] -> [Char]
trim forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Char] -> [[Char]] -> [Char] -> IO [Char]
readProcess [Char]
"ghc-pkg" [[Char]]
toModuleOpts []
if [Char]
pkg forall a. Eq a => a -> a -> Bool
== [Char]
"" then
forall (m :: * -> *) a. Monad m => a -> m a
return [Char]
"\n"
else do
[Char]
htmlpath <- [Char] -> [[Char]] -> [Char] -> IO [Char]
readProcess [Char]
"ghc-pkg" ([Char] -> [[Char]]
toDocDirOpts [Char]
pkg) []
let ret :: [Char]
ret = [Char]
pkg forall a. [a] -> [a] -> [a]
++ [Char]
" " forall a. [a] -> [a] -> [a]
++ forall a. Int -> [a] -> [a]
drop Int
14 [Char]
htmlpath
forall (m :: * -> *) a. Monad m => a -> m a
return [Char]
ret
where
toModuleOpts :: [[Char]]
toModuleOpts = [[Char]
"find-module", [Char]
mdl, [Char]
"--simple-output"]
forall a. [a] -> [a] -> [a]
++ [GhcPkgDb] -> [[Char]]
ghcPkgDbStackOpts (Cradle -> [GhcPkgDb]
cradlePkgDbStack Cradle
cradle)
toDocDirOpts :: [Char] -> [[Char]]
toDocDirOpts [Char]
pkg = [[Char]
"field", [Char]
pkg, [Char]
"haddock-html"]
forall a. [a] -> [a] -> [a]
++ [GhcPkgDb] -> [[Char]]
ghcPkgDbStackOpts (Cradle -> [GhcPkgDb]
cradlePkgDbStack Cradle
cradle)
trim :: [Char] -> [Char]
trim = forall a. (a -> Bool) -> [a] -> [a]
takeWhile (forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`notElem` [Char]
" \n")