packages feed

windowslive-0.1.1.1: Setup.lhs

#!/usr/bin/env runhaskell
> import Distribution.Simple
> import Distribution.PackageDescription
> import Distribution.Simple.Setup ( defaultBuildFlags )
> import Distribution.Simple.LocalBuildInfo ( buildDir )
> import Distribution.Simple.Utils ( rawSystemExit )
> import Distribution.Verbosity ( normal )
> import System.FilePath ( (</>) )
> import Control.Monad ( forM_, when )
> import Data.Char ( toLower )

> main = defaultMainWithHooks $ handleTestExes simpleUserHooks

> handleTestExes hooks = hooks { instHook = dropTestExes instHook
>                              , copyHook = dropTestExes copyHook
>                              , runTests = runTestExes
>                              }
>     where
>       dropTestExes hook pkg =
>           let nonTest = filter (not . isTestExe) (executables pkg)
>           in hook hooks $ pkg { executables = nonTest }
>
>       runTestExes args _unknown pkg lbi = do
>         buildHook hooks pkg lbi hooks defaultBuildFlags
>         forM_ (executables pkg) $ \exe ->
>             let testPath = buildDir lbi </> exeName exe </> exeName exe
>             in when (isTestExe exe) $ rawSystemExit normal testPath args

> isTestExe exe =
>     let fields = customFieldsBI (buildInfo exe)
>     in ["true"] == [ map toLower val | ("x-test-executable", val) <- fields ]