packages feed

bitstring-0.0.0: Setup.lhs

#! /usr/bin/env runhaskell
>
> import Control.Monad
> import Distribution.Simple
> import Distribution.PackageDescription
> import System.IO
> import System.Directory
>
> copyFileWithPrefix src tgt prefix = 
>   readFile src >>= \txt -> writeFile tgt (prefix ++ txt)
>
> copyFiles srcdir tgtdir prefix = do
>   files <- getDirectoryContents srcdir
>   forM_ files $ \fname -> do
>     let src = srcdir ++ fname
>         tgt = tgtdir ++ fname
>     doesFileExist src >>= \b -> when b $ copyFileWithPrefix src tgt prefix
>     doesDirectoryExist src>>= \b -> when ( b && fname /= "." && fname /= ".." ) $ do
>       createDirectoryIfMissing False tgt
>       copyFiles (src ++ "/") (tgt ++ "/") prefix
>
> thePrefix = "-- DO NOT EDIT THIS FILE\n{-# OPTIONS_GHC -DBITSTRING_BIGENDIAN #-}\n"
>
> myPreBuildHook args buildflags = do
>   createDirectoryIfMissing False "Data/BitString"
>   copyFileWithPrefix "Data/BitString.hs" "Data/BitString/BigEndian.hs" thePrefix
>   return $ emptyHookedBuildInfo  
>
> myPostCleanHook args cleanflags pdep mlocalbuildinfo = do
>   removeDirectoryRecursive "Data/BitString"
>
> myUserHooks = simpleUserHooks 
>   { preBuild = myPreBuildHook 
>   , postClean = myPostCleanHook
>   }
>
> main = do
>   defaultMainWithHooks myUserHooks
>