#!/usr/bin/env runhaskell module Main (main) where -- import Distribution.Simple import Distribution.Simple.Setup (CleanFlags, HaddockFlags) import Distribution.Simple.LocalBuildInfo (LocalBuildInfo) import Distribution.PackageDescription (HookedBuildInfo , emptyHookedBuildInfo , PackageDescription ) import System.Cmd (system) main :: IO () main = defaultMainWithHooks simpleUserHooks { preHaddock = preHaddockScript , postClean = postCleanScript } preHaddockScript :: Args -> HaddockFlags -> IO HookedBuildInfo preHaddockScript _ _ = do putStrLn "Building lhs2hs..." system "ghc --make lhs2hs.hs -o lhs2hs" putStrLn "Illiterating Data.Number.LogFloat for Haddock..." system "./lhs2hs Data/Number/LogFloat.lhs Data/Number/LogFloat.hs" return emptyHookedBuildInfo postCleanScript :: Args -> CleanFlags -> PackageDescription -> Maybe LocalBuildInfo -> IO () postCleanScript _ _ _ _ = do putStrLn $ "removing files: " ++ commafy files removeAll files where files = ["Data/Number/LogFloat.hs", "lhs2hs", "lhs2hs.hi", "lhs2hs.o"] removeAll = sequence_ . map (system . (++) "rm -f ") commafy [] = "" commafy [x] = x commafy (x:xs@(_:_)) = x++", "++commafy xs