packages feed

infinity-0.3: Setup.hs

#!/usr/bin/env runghc
import Distribution.Simple
import qualified Control.Exception as Ex
import System.Directory
import Control.Monad
import System.Info
import System.Exit
import List

b   = "infinity"

main = defaultMainWithHooks $ defaultUserHooks {
      postBuild = copyInfinity,
      postClean = cleanInfinity
}


copyInfinity _ _ _ _ = do
  copyFile ("dist/build/infinity/"++b) b
  Ex.catch (createDirectory "Log" >> createDirectory "State")
           (\_ -> return ())
  return ()

cleanInfinity _ _ _ _ = do
  Ex.catch (removeFile b) 
           (\_ -> return ())        
  clean "."
  clean "Plugins"
  return ()
 where
   clean s = do
     c <- getDirectoryContents s
     forM_ c $ \f -> do
               if (".o"  `isSuffixOf` f ||
                   ".hi" `isSuffixOf` f ||
                   "#"   `isSuffixOf` f || 
                   "~"   `isSuffixOf` f)
                then removeFile $ s++"/"++f
                else return ()