packages feed

bluetile-0.4.3: Setup.lhs

#!/usr/bin/env runhaskell
> import Distribution.PackageDescription
> import Distribution.Simple
> import Distribution.Simple.LocalBuildInfo
> import Distribution.Simple.Setup
> import System.FilePath
> import System.Directory
> import Control.Monad
> main = defaultMainWithHooks (simpleUserHooks { postCopy = myPostCopy, postInst = myPostInst } )
>
> myPostCopy :: Args -> CopyFlags -> PackageDescription -> LocalBuildInfo -> IO ()
> myPostCopy _ copyflags pkgdesc lbi = do
>   let dirs = absoluteInstallDirs pkgdesc lbi (fromFlag $ copyDest copyflags)
>   libExecHook dirs
>
> myPostInst :: Args -> InstallFlags -> PackageDescription -> LocalBuildInfo -> IO ()
> myPostInst _ _ pkgdesc lbi = do
>   let dirs = absoluteInstallDirs pkgdesc lbi NoCopyDest
>   libExecHook dirs
>
> -- hook to move helper binaries to the libexec directory
> libExecHook :: InstallDirs String -> IO ()
> libExecHook dirs = do
>   let bdir = bindir dirs
>   let lexecdir = libexecdir dirs
>   createDirectoryIfMissing True lexecdir
>   forM_ ["bluetiledock", "bluetilemockwin", "bluetilegreet"] $ \binary ->
>     renameFile (bdir </> binary) (lexecdir </> binary)