diff options
author | Joey Hess <joey@kitenet.net> | 2011-11-14 19:27:00 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2011-11-14 19:27:22 -0400 |
commit | bfe38f8ff16dc6ccc32d545e6fed87817caa26cf (patch) | |
tree | 65efec376ee385efe5d538aa2453b7b925e8aee5 | |
parent | 02f1d5467ad05315905b9cb90307049ababb4a63 (diff) |
status --json --fast for esc
* status: Fix --json mode (only the repository lists are currently
displayed)
* status: --fast is back
-rw-r--r-- | Command/Status.hs | 22 | ||||
-rw-r--r-- | Messages.hs | 14 | ||||
-rw-r--r-- | Messages/JSON.hs | 8 | ||||
-rw-r--r-- | debian/changelog | 3 | ||||
-rw-r--r-- | doc/git-annex.mdwn | 4 |
5 files changed, 41 insertions, 10 deletions
diff --git a/Command/Status.hs b/Command/Status.hs index 3fddb599d..39d9400fb 100644 --- a/Command/Status.hs +++ b/Command/Status.hs @@ -18,6 +18,7 @@ import qualified Types.Remote as R import qualified Remote import qualified Command.Unused import qualified Git +import qualified Annex import Command import Utility.DataUnits import Annex.Content @@ -49,14 +50,17 @@ seek = [withNothing start] {- Order is significant. Less expensive operations, and operations - that share data go together. -} -stats :: [Stat] -stats = +fast_stats :: [Stat] +fast_stats = [ supported_backends , supported_remote_types , remote_list Trusted "trusted" , remote_list SemiTrusted "semitrusted" , remote_list UnTrusted "untrusted" - , tmp_size + ] +slow_stats :: [Stat] +slow_stats = + [ tmp_size , bad_data_size , local_annex_keys , local_annex_size @@ -67,6 +71,10 @@ stats = start :: CommandStart start = do + showStart "status" "." + showWith $ liftIO $ putStrLn "" + fast <- Annex.getState Annex.fast + let stats = if fast then fast_stats else fast_stats ++ slow_stats evalStateT (mapM_ showStat stats) (StatInfo Nothing Nothing) stop @@ -80,9 +88,11 @@ showStat :: Stat -> StatState () showStat s = calc =<< s where calc (Just (desc, a)) = do - liftIO $ putStr $ desc ++ ": " - liftIO $ hFlush stdout - liftIO . putStrLn =<< a + r <- a -- run first, it may produce JSON + lift . showWith $ do + liftIO $ putStr $ desc ++ ": " + liftIO $ hFlush stdout + liftIO $ putStrLn r calc Nothing = return () supported_backends :: Stat diff --git a/Messages.hs b/Messages.hs index 6f4880e2d..d7eabccbb 100644 --- a/Messages.hs +++ b/Messages.hs @@ -20,6 +20,8 @@ module Messages ( warning, indent, maybeShowJSON, + showWith, + setupConsole ) where @@ -31,7 +33,7 @@ import qualified Annex import qualified Messages.JSON as JSON showStart :: String -> String -> Annex () -showStart command file = handle (JSON.start command file) $ +showStart command file = handle (JSON.start command $ Just file) $ flushed $ putStr $ command ++ " " ++ file ++ " " showNote :: String -> Annex () @@ -111,6 +113,16 @@ handle json normal = do maybeShowJSON :: JSON a => [(String, a)] -> Annex () maybeShowJSON v = handle (JSON.add v) q +{- Performs an a action (such as displaying something) only when + - not in json mode, and not quiet. -} +showWith :: Annex () -> Annex () +showWith a = do + output <- Annex.getState Annex.output + case output of + Annex.NormalOutput -> a + Annex.QuietOutput -> q + Annex.JSONOutput -> q + q :: Monad m => m () q = return () diff --git a/Messages/JSON.hs b/Messages/JSON.hs index fb95f550e..a325ef130 100644 --- a/Messages/JSON.hs +++ b/Messages/JSON.hs @@ -16,8 +16,12 @@ import Text.JSON import qualified Utility.JSONStream as Stream -start :: String -> String -> IO () -start command file = putStr $ Stream.start [("command", command), ("file", file)] +start :: String -> Maybe String -> IO () +start command file = + putStr $ Stream.start $ ("command", command) : filepart file + where + filepart Nothing = [] + filepart (Just f) = [("file", f)] end :: Bool -> IO () end b = putStr $ Stream.add [("success", b)] ++ Stream.end diff --git a/debian/changelog b/debian/changelog index b49967fe9..aa52730bc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -9,6 +9,9 @@ git-annex (3.20111112) UNRELEASED; urgency=low * Optimised union merging; now only runs git cat-file once. * status: Now displays trusted, untrusted, and semitrusted repositories separately. + * status: Fix --json mode (only the repository lists are currently + displayed) + * status: --fast is back -- Joey Hess <joeyh@debian.org> Sat, 12 Nov 2011 14:50:21 -0400 diff --git a/doc/git-annex.mdwn b/doc/git-annex.mdwn index fdd8dd1c1..35ba25115 100644 --- a/doc/git-annex.mdwn +++ b/doc/git-annex.mdwn @@ -240,7 +240,9 @@ subdirectories). * status Displays some statistics and other information, including how much data - is in the annex. + is in the annex and a list of all known repositories. + + To only show the data that can be gathered quickly, use --fast. * map |