summaryrefslogtreecommitdiff
path: root/Command/MetaData.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2014-02-23 13:58:16 -0400
committerGravatar Joey Hess <joey@kitenet.net>2014-02-23 13:58:16 -0400
commitd811d5697259aaf0fe68f424edf33321ef2b0d5e (patch)
tree35e24d5949e5df675fc70f5fdb1f43579e4ed41d /Command/MetaData.hs
parent84884101e3c19b0db4c8c5975fc47575dc0782fb (diff)
metadata: Support --json
Diffstat (limited to 'Command/MetaData.hs')
-rw-r--r--Command/MetaData.hs10
1 files changed, 6 insertions, 4 deletions
diff --git a/Command/MetaData.hs b/Command/MetaData.hs
index 651cb4944..55d67c6b7 100644
--- a/Command/MetaData.hs
+++ b/Command/MetaData.hs
@@ -18,7 +18,7 @@ import qualified Data.Set as S
import Data.Time.Clock.POSIX
def :: [Command]
-def = [withOptions [setOption, tagOption, untagOption] $
+def = [withOptions [setOption, tagOption, untagOption, jsonOption] $
command "metadata" paramPaths seek
SectionMetaData "sets metadata of a file"]
@@ -62,8 +62,10 @@ perform now ms k = do
cleanup :: Key -> CommandCleanup
cleanup k = do
- m <- getCurrentMetaData k
- showLongNote $ unlines $ concatMap showmeta $ fromMetaData $ currentMetaData m
+ l <- map unwrapmeta . fromMetaData <$> getCurrentMetaData k
+ maybeShowJSON l
+ showLongNote $ unlines $ concatMap showmeta l
return True
where
- showmeta (f, vs) = map (\v -> fromMetaField f ++ "=" ++ fromMetaValue v) $ S.toList vs
+ unwrapmeta (f, v) = (fromMetaField f, map fromMetaValue (S.toList v))
+ showmeta (f, vs) = map ((f ++ "=") ++) vs