From 639204b6f0521e85961ca32fcd8b5a70d148063f Mon Sep 17 00:00:00 2001 From: Luite Stegeman Date: Mon, 15 Oct 2012 20:42:55 +0200 Subject: [PATCH] pass extra arguments to cabal, for devel and builc --- yesod/main.hs | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/yesod/main.hs b/yesod/main.hs index 1f6d250d..4cb464af 100755 --- a/yesod/main.hs +++ b/yesod/main.hs @@ -36,27 +36,30 @@ cabalCommand mopt | optCabalPgm mopt == CabalDev = "cabal-dev" | otherwise = "cabal" -data CabalPgm = Cabal | CabalDev deriving Eq +data CabalPgm = Cabal | CabalDev deriving (Show, Eq) data Options = Options { optCabalPgm :: CabalPgm , optVerbose :: Bool , optCommand :: Command } + deriving (Show, Eq) data Command = Init | Configure - | Build + | Build { _buildExtraArgs :: [String] } | Touch | Devel { _develDisableApi :: Bool , _develSuccessHook :: Maybe String , _develFailHook :: Maybe String , _develRescan :: Int + , _develExtraArgs :: [String] } | Test | AddHandler | Keter { _keterNoRebuild :: Bool } | Version + deriving (Show, Eq) main :: IO () main = do @@ -65,10 +68,10 @@ main = do case optCommand o of Init -> scaffold Configure -> cabal ["configure"] - Build -> touch' >> cabal ["build"] -- fixme passthrough remaining args + Build es -> touch' >> cabal ("build":es) Touch -> touch' - (Devel da s f r) -> devel (DevelOpts (optCabalPgm o == CabalDev) da (optVerbose o) r s f) [] -- fixme, passthrough remaining args - (Keter noRebuild) -> keter (cabalCommand o) noRebuild + Devel da s f r es -> devel (DevelOpts (optCabalPgm o == CabalDev) da (optVerbose o) r s f) es + Keter noRebuild -> keter (cabalCommand o) noRebuild Version -> do putStrLn ("yesod-core version:" ++ yesodVersion) putStrLn ("yesod version:" ++ showVersion Paths_yesod.version) AddHandler -> addHandler @@ -88,7 +91,7 @@ optParser = Options (progDesc "Scaffold a new site")) <> command "configure" (info (pure Configure) (progDesc "Configure a project for building")) - <> command "build" (info (pure Build) + <> command "build" (info (Build <$> extraCabalArgs) (progDesc $ "Build project (performs TH dependency analysis)" ++ windowsWarning)) <> command "touch" (info (pure Touch) (progDesc $ "Touch any files with altered TH dependencies but do not build" ++ windowsWarning)) @@ -110,12 +113,18 @@ keterOptions = Keter <$> switch ( long "nobuild" <> short 'n' <> help "Skip rebu develOptions :: Parser Command develOptions = Devel <$> switch ( long "disable-api" <> short 'd' <> help "Disable fast GHC API rebuilding") - <*> optStr ( long "success-hook" <> short 's' - <> help "Run command after rebuild succeeds") - <*> optStr ( long "failure-hook" <> short 'f' - <> help "Run command when rebuild fails") + <*> optStr ( long "success-hook" <> short 's' <> metavar "COMMAND" + <> help "Run COMMAND after rebuild succeeds") + <*> optStr ( long "failure-hook" <> short 'f' <> metavar "COMMAND" + <> help "Run COMMAND when rebuild fails") <*> option ( long "event-timeout" <> short 't' <> value (-1) <> metavar "N" <> help "Force rescan of files every N seconds" ) + <*> extraCabalArgs + +extraCabalArgs :: Parser [String] +extraCabalArgs = many (strOption ( long "extra-cabal-arg" <> short 'e' <> metavar "ARG" + <> help "pass extra argument ARG to cabal") + ) -- | Optional @String@ argument optStr :: Mod OptionFields (Maybe String) -> Parser (Maybe String)