diff options
author | Joey Hess <joeyh@joeyh.name> | 2017-02-20 16:37:04 -0400 |
---|---|---|
committer | Joey Hess <joeyh@joeyh.name> | 2017-02-20 17:01:24 -0400 |
commit | 3483595622432eec1df905b24faa0f3f48d507de (patch) | |
tree | ac96b72d1f3998fe715e045109adb0fce671b735 /Command | |
parent | c8a5b1a658f23ae882ee0fb2d975eb7281e9c022 (diff) |
status: Pass --ignore-submodules=when option on to git status.
Didn't make --ignore-submodules without a value be handled because I can't
see a way to make optparse-applicative parse that. I've opened a bug
requesting a way to do that:
https://github.com/pcapriotti/optparse-applicative/issues/243
Diffstat (limited to 'Command')
-rw-r--r-- | Command/Status.hs | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/Command/Status.hs b/Command/Status.hs index 3a3bfa812..2e6b9f44a 100644 --- a/Command/Status.hs +++ b/Command/Status.hs @@ -20,14 +20,28 @@ cmd = notBareRepo $ noCommit $ noMessages $ withGlobalOptions [jsonOption] $ command "status" SectionCommon "show the working tree status" - paramPaths (withParams seek) + paramPaths (seek <$$> optParser) -seek :: CmdParams -> CommandSeek -seek = withWords start +data StatusOptions = StatusOptions + { statusFiles :: CmdParams + , ignoreSubmodules :: Maybe String + } + +optParser :: CmdParamsDesc -> Parser StatusOptions +optParser desc = StatusOptions + <$> cmdParams desc + <*> optional (strOption + ( long "ignore-submodules" + <> help "passed on to git status" + <> metavar "WHEN" + )) + +seek :: StatusOptions -> CommandSeek +seek o = withWords (start o) (statusFiles o) -start :: [FilePath] -> CommandStart -start locs = do - (l, cleanup) <- inRepo $ getStatus locs +start :: StatusOptions -> [FilePath] -> CommandStart +start o locs = do + (l, cleanup) <- inRepo $ getStatus ps locs getstatus <- ifM isDirect ( return statusDirect , return $ \s -> pure (Just s) @@ -35,6 +49,10 @@ start locs = do forM_ l $ \s -> maybe noop displayStatus =<< getstatus s void $ liftIO cleanup stop + where + ps = case ignoreSubmodules o of + Nothing -> [] + Just s -> [Param $ "--ignore-submodules="++s] displayStatus :: Status -> Annex () -- renames not shown in this simplified status |