-- Build .app bundles with the cabal-macosx package -- Modeled after the excellent documentation on -- https://github.com/gimbo/cabal-macosx/tree/master/examples import Distribution.MacOSX as Mac import Distribution.Simple import Distribution.Simple.LocalBuildInfo main :: IO () main = defaultMainWithHooks $ simpleUserHooks { postBuild = myPostBuild -- no-op if not MacOS X } myPostBuild a b c d = Mac.appBundleBuildHook (filterApps a guiApps) a b c d filterApps :: [String] -> [MacApp] -> [MacApp] filterApps args apps = if null names then apps else names where names = [ app | app@(MacApp name1 _ _ _ _ _) <- apps , name2 <- args , name1 == name2 ] guiApps :: [MacApp] guiApps = [mkApp filesAsteroids "Asteroids", mkApp filesAnimation "Animation"] ++ apps apps = map (mkApp []) $ words "Arithmetic BarTab Counter CurrencyConverter CRUD" ++ words "NetMonitor TicTacToe TwoCounters Wave" filesAsteroids = map ("data/" ++) $ words "burning.ico rock.ico ship.ico explode.wav" filesAnimation = map ("data/" ++) $ words "banana.png" mkApp files name = MacApp name Nothing Nothing files [] DoNotChase