cedict-0.2.1: Setup.hs
#!/usr/bin/env runhaskell
import Data.Char.CEDICT.GenerateCode
import System.IO.UTF8
import System.IO hiding
( appendFile
, getContents
, getLine
, print
, putStr
, putStrLn
, readFile
, readLn
, writeFile
, hGetContents
, hGetLine
, hPutStr
, hPutStrLn
)
import Prelude hiding
( appendFile
, getContents
, getLine
, print
, putStr
, putStrLn
, readFile
, readLn
, writeFile
)
import Distribution.Simple
import Distribution.PackageDescription
import Control.Monad
import System.FilePath
import System.Directory
import System.Time
import System.Locale
hooks = defaultUserHooks { preBuild = optionalGenC }
main = defaultMainWithHooks hooks
optionalGenC _ _ = do
n <- needed
when n genC
return emptyHookedBuildInfo
where
headerPath = combine "c" "data.h"
dictPath = combine "d" "utf8-cedict"
needed = do
f' <- doesFileExist headerPath
if f' then tCompare else return True
genC = do
hPutStrLn stderr "Generating CEDICT header file -- may take a few minutes."
t <- bench $ readAndWrite dictPath headerPath
hPutStrLn stderr $ " " ++ show t ++ "seconds"
tCompare = do
headerTime <- getModificationTime headerPath
dictTime <- getModificationTime dictPath
return $ headerTime < dictTime
bench op = do
ts <- getClockTime
op
tf <- getClockTime
return $ tdSec $ diffClockTimes tf ts