From ccb9d00191a66ce572c17841eb38b7bb393053db Mon Sep 17 00:00:00 2001 From: hirschen Date: Tue, 17 Apr 2012 10:40:04 +0200 Subject: [PATCH] Add success- and failhook options to cmdline --- yesod/Devel.hs | 10 ++++++---- yesod/Types.hs | 16 ++++++++++++++++ yesod/main.hs | 12 ++++++++---- 3 files changed, 30 insertions(+), 8 deletions(-) diff --git a/yesod/Devel.hs b/yesod/Devel.hs index cc8e1630..1771f00f 100644 --- a/yesod/Devel.hs +++ b/yesod/Devel.hs @@ -63,16 +63,18 @@ removeLock :: IO () removeLock = removeFileIfExists lockFile data DevelOpts = DevelOpts - { isCabalDev :: Bool - , forceCabal :: Bool - , verbose :: Bool + { isCabalDev :: Bool + , forceCabal :: Bool + , verbose :: Bool + , successHook :: Maybe String + , failHook :: Maybe String } deriving (Show, Eq) cabalCommand :: DevelOpts -> FilePath cabalCommand opts | isCabalDev opts = "cabal-dev" | otherwise = "cabal" -defaultDevelOpts = DevelOpts False False False +defaultDevelOpts = DevelOpts False False False Nothing Nothing devel :: DevelOpts -> [String] -> IO () devel opts passThroughArgs = do diff --git a/yesod/Types.hs b/yesod/Types.hs index c0c45bc3..9c066457 100644 --- a/yesod/Types.hs +++ b/yesod/Types.hs @@ -28,6 +28,22 @@ mkOptApi name = option name (\o -> o , optionDescription = "use the GHC API to build (faster, but experimental)" }) +mkOptSuccessHook name = option name (\o -> o + { optionLongFlags = ["success-hook"] + , optionShortFlags = ['s'] + , optionType = optionTypeMaybe optionTypeString + , optionDefault = "" + , optionDescription = "Command to run when compilation succeeds (e.g. 'beep')" + }) + +mkOptFailHook name = option name (\o -> o + { optionLongFlags = ["fail-hook"] + , optionShortFlags = ['f'] + , optionType = optionTypeMaybe optionTypeString + , optionDefault = "" + , optionDescription = "Command to run when compilation fails (e.g. 'beep')" + }) + mkOptVerbose name = option name (\o -> o { optionLongFlags = ["verbose"] , optionShortFlags = ['v'] diff --git a/yesod/main.hs b/yesod/main.hs index 33a4926b..611e4cfb 100755 --- a/yesod/main.hs +++ b/yesod/main.hs @@ -20,10 +20,12 @@ defineOptions "NoOptions" (return ()) defineOptions "DevelOptions" $ do mkOptApi "develOptApi" -- mkOptNoApi "develOptNoApi" -- use this later when flag is enabled by default + mkOptSuccessHook "optSuccessHook" + mkOptFailHook "optFailHook" defineOptions "MainOptions" $ do - mkOptCabalDev "optCabalDev" - mkOptVerbose "optVerbose" + mkOptCabalDev "optCabalDev" + mkOptVerbose "optVerbose" type InitOptions = NoOptions type ConfigureOptions = NoOptions @@ -65,8 +67,10 @@ cmdTouch _ _ _ = touch cmdDevel :: MainOptions -> DevelOptions -> [String] -> IO () cmdDevel mopt opts args = devel dopts args where - dopts = DevelOpts (optCabalDev mopt) forceCabal (optVerbose mopt) - forceCabal = not (develOptApi opts) + dopts = DevelOpts (optCabalDev mopt) forceCabal (optVerbose mopt) successHook failHook + successHook = optSuccessHook opts + failHook = optFailHook opts + forceCabal = not (develOptApi opts) -- forceCabal = develOptNoApi opts cmdVersion :: MainOptions -> VersionOptions -> [String] -> IO ()