Add success- and failhook options to cmdline

This commit is contained in:
hirschen 2012-04-17 10:40:04 +02:00
parent 2f5628d254
commit ccb9d00191
3 changed files with 30 additions and 8 deletions

View File

@ -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

View File

@ -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']

View File

@ -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 ()