summaryrefslogtreecommitdiff
path: root/Command/MetaData.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2016-07-26 19:50:02 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2016-07-26 19:50:02 -0400
commitc4da1f5244b506a36c129dc577ba777b78b486c7 (patch)
tree3b13f2e0f0f7f9bd28fd4a7d54ffb6dba294c9dd /Command/MetaData.hs
parentbcc5ee4f322a139ee7cef2bae1fc9bea9f5398ca (diff)
improved use of Aeson for JSONActionItem
Diffstat (limited to 'Command/MetaData.hs')
-rw-r--r--Command/MetaData.hs13
1 files changed, 9 insertions, 4 deletions
diff --git a/Command/MetaData.hs b/Command/MetaData.hs
index 66469f2fc..d33372d0b 100644
--- a/Command/MetaData.hs
+++ b/Command/MetaData.hs
@@ -10,7 +10,7 @@ module Command.MetaData where
import Command
import Annex.MetaData
import Logs.MetaData
-import Messages.JSON (ParsedJSON(..))
+import Messages.JSON (JSONActionItem(..))
import qualified Data.Set as S
import qualified Data.Text as T
@@ -131,6 +131,11 @@ fieldsField = T.pack "fields"
parseJSONInput :: String -> Maybe (Either FilePath Key, MetaData)
parseJSONInput i = do
v <- decode (BU.fromString i)
- case parsedAdded v of
- Nothing -> return (parsedKeyfile v, emptyMetaData)
- Just (MetaDataFields m) -> return (parsedKeyfile v, m)
+ let m = case itemAdded v of
+ Nothing -> emptyMetaData
+ Just (MetaDataFields m') -> m'
+ let keyfile = case (itemKey v, itemFile v) of
+ (Just k, _) -> Right k
+ (Nothing, Just f) -> Left f
+ (Nothing, Nothing) -> error "JSON input is missing either file or key"
+ return (keyfile, m)