import Distribution.PackageDescription (PackageDescription)
import Distribution.Simple (defaultMainWithHooks, simpleUserHooks)
import Distribution.Simple.InstallDirs (InstallDirs(..), docdir)
import Distribution.Simple.LocalBuildInfo (LocalBuildInfo(..), installDirTemplates, fromPathTemplate)
import Distribution.Simple.Setup (InstallFlags)
import Distribution.Simple.UserHooks (UserHooks, instHook)
import System.Exit (ExitCode(..))
import System.Process (system)
main :: IO ()
main = defaultMainWithHooks simpleUserHooks { instHook = readme } -- does not get invoked; postBuild does work, but where to put the generated file?
readme :: PackageDescription -> LocalBuildInfo -> UserHooks -> InstallFlags -> IO ()
readme _ (LocalBuildInfo { installDirTemplates = InstallDirs { docdir = docdir' }}) _ _ = do
putStrLn "Generating README.html from README.md..."
exitCode <- system $ "./doc/generate " ++ (show destination)
case exitCode of ExitSuccess -> return ()
ExitFailure _ -> fail "README.html could not be generated from README.md"
return ()
where destination = fromPathTemplate docdir'
(Apologies if this is a duplicate email, wasn't sure if this already got sent previously.)