{-# LANGUAGE OverloadedStrings #-}
module Haddock where
import qualified Filesystem.Path.CurrentOS as FPC
import Documentation.Haddock
data HaddockArg = HaddockArg { name :: String, value :: Maybe String }
instance Show HaddockArg where
show arg = "--" ++ name arg ++ maybe [] (\v -> '=':v) (value arg)
runHaddock :: [HaddockArg] -> IO ()
runHaddock = haddock . map show
flag :: String -> HaddockArg
flag = flip HaddockArg Nothing
readInterface :: FPC.FilePath -> HaddockArg
readInterface ipath =
HaddockArg "read-interface" . Just $
(FPC.encodeString . FPC.filename . FPC.dropExtension $ ipath) ++ ',': FPC.encodeString ipath
-- | Given a directory with .haddock interface specs,
-- write index files and TOC for those to the document directory.
runHaddockIndex :: FPC.FilePath -> FPC.FilePath -> IO ()
runHaddockIndex interface document_dir =
runHaddock $ [
-- generate html index file(s)
flag "gen-index",
-- generate the html contents file
flag "gen-contents",
-- output directory for index file(s) is same as document dir
HaddockArg "odir" . Just . FPC.encodeString $ document_dir
] ++ [readInterface interface]