module Language.Haskell.GhcMod.PkgDoc (pkgDoc) where import Language.Haskell.GhcMod.Types import Language.Haskell.GhcMod.GhcPkg import Language.Haskell.GhcMod.Monad import Language.Haskell.GhcMod.Output import Control.Applicative import Prelude -- | Obtaining the package name and the doc path of a module. pkgDoc :: IOish m => String -> GhcModT m String pkgDoc mdl = do ghcPkg <- getGhcPkgProgram readProc <- gmReadProcess pkgDbStack <- getPackageDbStack pkg <- liftIO $ trim <$> readProc ghcPkg (toModuleOpts pkgDbStack) "" if pkg == "" then return "\n" else do htmlpath <- liftIO $ readProc ghcPkg (toDocDirOpts pkg pkgDbStack) "" let ret = pkg ++ " " ++ drop 14 htmlpath return ret where toModuleOpts dbs = ["find-module", mdl, "--simple-output"] ++ ghcPkgDbStackOpts dbs toDocDirOpts pkg dbs = ["field", pkg, "haddock-html"] ++ ghcPkgDbStackOpts dbs trim = takeWhile (`notElem` " \n")