pass extra arguments to cabal, for devel and builc
This commit is contained in:
parent
19d4834378
commit
639204b6f0
@ -36,27 +36,30 @@ cabalCommand mopt
|
|||||||
| optCabalPgm mopt == CabalDev = "cabal-dev"
|
| optCabalPgm mopt == CabalDev = "cabal-dev"
|
||||||
| otherwise = "cabal"
|
| otherwise = "cabal"
|
||||||
|
|
||||||
data CabalPgm = Cabal | CabalDev deriving Eq
|
data CabalPgm = Cabal | CabalDev deriving (Show, Eq)
|
||||||
|
|
||||||
data Options = Options
|
data Options = Options
|
||||||
{ optCabalPgm :: CabalPgm
|
{ optCabalPgm :: CabalPgm
|
||||||
, optVerbose :: Bool
|
, optVerbose :: Bool
|
||||||
, optCommand :: Command
|
, optCommand :: Command
|
||||||
}
|
}
|
||||||
|
deriving (Show, Eq)
|
||||||
|
|
||||||
data Command = Init
|
data Command = Init
|
||||||
| Configure
|
| Configure
|
||||||
| Build
|
| Build { _buildExtraArgs :: [String] }
|
||||||
| Touch
|
| Touch
|
||||||
| Devel { _develDisableApi :: Bool
|
| Devel { _develDisableApi :: Bool
|
||||||
, _develSuccessHook :: Maybe String
|
, _develSuccessHook :: Maybe String
|
||||||
, _develFailHook :: Maybe String
|
, _develFailHook :: Maybe String
|
||||||
, _develRescan :: Int
|
, _develRescan :: Int
|
||||||
|
, _develExtraArgs :: [String]
|
||||||
}
|
}
|
||||||
| Test
|
| Test
|
||||||
| AddHandler
|
| AddHandler
|
||||||
| Keter { _keterNoRebuild :: Bool }
|
| Keter { _keterNoRebuild :: Bool }
|
||||||
| Version
|
| Version
|
||||||
|
deriving (Show, Eq)
|
||||||
|
|
||||||
main :: IO ()
|
main :: IO ()
|
||||||
main = do
|
main = do
|
||||||
@ -65,10 +68,10 @@ main = do
|
|||||||
case optCommand o of
|
case optCommand o of
|
||||||
Init -> scaffold
|
Init -> scaffold
|
||||||
Configure -> cabal ["configure"]
|
Configure -> cabal ["configure"]
|
||||||
Build -> touch' >> cabal ["build"] -- fixme passthrough remaining args
|
Build es -> touch' >> cabal ("build":es)
|
||||||
Touch -> touch'
|
Touch -> touch'
|
||||||
(Devel da s f r) -> devel (DevelOpts (optCabalPgm o == CabalDev) da (optVerbose o) r s f) [] -- fixme, passthrough remaining args
|
Devel da s f r es -> devel (DevelOpts (optCabalPgm o == CabalDev) da (optVerbose o) r s f) es
|
||||||
(Keter noRebuild) -> keter (cabalCommand o) noRebuild
|
Keter noRebuild -> keter (cabalCommand o) noRebuild
|
||||||
Version -> do putStrLn ("yesod-core version:" ++ yesodVersion)
|
Version -> do putStrLn ("yesod-core version:" ++ yesodVersion)
|
||||||
putStrLn ("yesod version:" ++ showVersion Paths_yesod.version)
|
putStrLn ("yesod version:" ++ showVersion Paths_yesod.version)
|
||||||
AddHandler -> addHandler
|
AddHandler -> addHandler
|
||||||
@ -88,7 +91,7 @@ optParser = Options
|
|||||||
(progDesc "Scaffold a new site"))
|
(progDesc "Scaffold a new site"))
|
||||||
<> command "configure" (info (pure Configure)
|
<> command "configure" (info (pure Configure)
|
||||||
(progDesc "Configure a project for building"))
|
(progDesc "Configure a project for building"))
|
||||||
<> command "build" (info (pure Build)
|
<> command "build" (info (Build <$> extraCabalArgs)
|
||||||
(progDesc $ "Build project (performs TH dependency analysis)" ++ windowsWarning))
|
(progDesc $ "Build project (performs TH dependency analysis)" ++ windowsWarning))
|
||||||
<> command "touch" (info (pure Touch)
|
<> command "touch" (info (pure Touch)
|
||||||
(progDesc $ "Touch any files with altered TH dependencies but do not build" ++ windowsWarning))
|
(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 :: Parser Command
|
||||||
develOptions = Devel <$> switch ( long "disable-api" <> short 'd'
|
develOptions = Devel <$> switch ( long "disable-api" <> short 'd'
|
||||||
<> help "Disable fast GHC API rebuilding")
|
<> help "Disable fast GHC API rebuilding")
|
||||||
<*> optStr ( long "success-hook" <> short 's'
|
<*> optStr ( long "success-hook" <> short 's' <> metavar "COMMAND"
|
||||||
<> help "Run command after rebuild succeeds")
|
<> help "Run COMMAND after rebuild succeeds")
|
||||||
<*> optStr ( long "failure-hook" <> short 'f'
|
<*> optStr ( long "failure-hook" <> short 'f' <> metavar "COMMAND"
|
||||||
<> help "Run command when rebuild fails")
|
<> help "Run COMMAND when rebuild fails")
|
||||||
<*> option ( long "event-timeout" <> short 't' <> value (-1) <> metavar "N"
|
<*> option ( long "event-timeout" <> short 't' <> value (-1) <> metavar "N"
|
||||||
<> help "Force rescan of files every N seconds" )
|
<> 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
|
-- | Optional @String@ argument
|
||||||
optStr :: Mod OptionFields (Maybe String) -> Parser (Maybe String)
|
optStr :: Mod OptionFields (Maybe String) -> Parser (Maybe String)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user