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 removeLock = removeFileIfExists lockFile
data DevelOpts = DevelOpts data DevelOpts = DevelOpts
{ isCabalDev :: Bool { isCabalDev :: Bool
, forceCabal :: Bool , forceCabal :: Bool
, verbose :: Bool , verbose :: Bool
, successHook :: Maybe String
, failHook :: Maybe String
} deriving (Show, Eq) } deriving (Show, Eq)
cabalCommand :: DevelOpts -> FilePath cabalCommand :: DevelOpts -> FilePath
cabalCommand opts | isCabalDev opts = "cabal-dev" cabalCommand opts | isCabalDev opts = "cabal-dev"
| otherwise = "cabal" | otherwise = "cabal"
defaultDevelOpts = DevelOpts False False False defaultDevelOpts = DevelOpts False False False Nothing Nothing
devel :: DevelOpts -> [String] -> IO () devel :: DevelOpts -> [String] -> IO ()
devel opts passThroughArgs = do 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)" , 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 mkOptVerbose name = option name (\o -> o
{ optionLongFlags = ["verbose"] { optionLongFlags = ["verbose"]
, optionShortFlags = ['v'] , optionShortFlags = ['v']

View File

@ -20,10 +20,12 @@ defineOptions "NoOptions" (return ())
defineOptions "DevelOptions" $ do defineOptions "DevelOptions" $ do
mkOptApi "develOptApi" mkOptApi "develOptApi"
-- mkOptNoApi "develOptNoApi" -- use this later when flag is enabled by default -- mkOptNoApi "develOptNoApi" -- use this later when flag is enabled by default
mkOptSuccessHook "optSuccessHook"
mkOptFailHook "optFailHook"
defineOptions "MainOptions" $ do defineOptions "MainOptions" $ do
mkOptCabalDev "optCabalDev" mkOptCabalDev "optCabalDev"
mkOptVerbose "optVerbose" mkOptVerbose "optVerbose"
type InitOptions = NoOptions type InitOptions = NoOptions
type ConfigureOptions = NoOptions type ConfigureOptions = NoOptions
@ -65,8 +67,10 @@ cmdTouch _ _ _ = touch
cmdDevel :: MainOptions -> DevelOptions -> [String] -> IO () cmdDevel :: MainOptions -> DevelOptions -> [String] -> IO ()
cmdDevel mopt opts args = devel dopts args cmdDevel mopt opts args = devel dopts args
where where
dopts = DevelOpts (optCabalDev mopt) forceCabal (optVerbose mopt) dopts = DevelOpts (optCabalDev mopt) forceCabal (optVerbose mopt) successHook failHook
forceCabal = not (develOptApi opts) successHook = optSuccessHook opts
failHook = optFailHook opts
forceCabal = not (develOptApi opts)
-- forceCabal = develOptNoApi opts -- forceCabal = develOptNoApi opts
cmdVersion :: MainOptions -> VersionOptions -> [String] -> IO () cmdVersion :: MainOptions -> VersionOptions -> [String] -> IO ()