diff options
author | Joey Hess <joey@kitenet.net> | 2013-12-15 14:46:29 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2013-12-15 14:52:09 -0400 |
commit | 0ca7ec1752419b9245373f5063c7c86e52ef2e9a (patch) | |
tree | d368bc5367f5549c75ddbed0bf10407ce66e41f5 /Command/Find.hs | |
parent | 3d1b94998a0aff3d08cf8648ae977614412e8138 (diff) |
Add plumbing-level lookupkey examinekey command.
find --format: Added hashdirlower, hashdirmixed, keyname, and mtime format
variables.
Diffstat (limited to 'Command/Find.hs')
-rw-r--r-- | Command/Find.hs | 46 |
1 files changed, 28 insertions, 18 deletions
diff --git a/Command/Find.hs b/Command/Find.hs index 4b8c7ce0e..0591e657e 100644 --- a/Command/Find.hs +++ b/Command/Find.hs @@ -26,6 +26,9 @@ def = [noCommit $ noMessages $ withOptions [formatOption, print0Option] $ formatOption :: Option formatOption = Option.field [] "format" paramFormat "control format of output" +withFormat :: (Maybe Utility.Format.Format -> CommandSeek) -> CommandSeek +withFormat = withField formatOption $ return . fmap Utility.Format.gen + print0Option :: Option print0Option = Option.Option [] ["print0"] (Option.NoArg set) "terminate output with null" @@ -33,29 +36,36 @@ print0Option = Option.Option [] ["print0"] (Option.NoArg set) set = Annex.setField (Option.name formatOption) "${file}\0" seek :: [CommandSeek] -seek = [withField formatOption formatconverter $ \f -> - withFilesInGit $ whenAnnexed $ start f] - where - formatconverter = return . fmap Utility.Format.gen +seek = [withFormat $ \f -> withFilesInGit $ whenAnnexed $ start f] start :: Maybe Utility.Format.Format -> FilePath -> (Key, Backend) -> CommandStart start format file (key, _) = do -- only files inAnnex are shown, unless the user has requested -- others via a limit whenM (limited <||> inAnnex key) $ - unlessM (showFullJSON vars) $ - case format of - Nothing -> liftIO $ putStrLn file - Just formatter -> liftIO $ putStr $ - Utility.Format.format formatter $ - M.fromList vars + showFormatted format file $ ("file", file) : keyVars key stop + +showFormatted :: Maybe Utility.Format.Format -> String -> [(String, String)] -> Annex () +showFormatted format unformatted vars = + unlessM (showFullJSON vars) $ + case format of + Nothing -> liftIO $ putStrLn unformatted + Just formatter -> liftIO $ putStr $ + Utility.Format.format formatter $ + M.fromList vars + +keyVars :: Key -> [(String, String)] +keyVars key = + [ ("key", key2file key) + , ("backend", keyBackendName key) + , ("bytesize", size show) + , ("humansize", size $ roughSize storageUnits True) + , ("keyname", keyName key) + , ("hashdirlower", hashDirLower key) + , ("hashdirmixed", hashDirMixed key) + , ("mtime", whenavail show $ keyMtime key) + ] where - vars = - [ ("file", file) - , ("key", key2file key) - , ("backend", keyBackendName key) - , ("bytesize", size show) - , ("humansize", size $ roughSize storageUnits True) - ] - size c = maybe "unknown" c $ keySize key + size c = whenavail c $ keySize key + whenavail = maybe "unknown" |