diff options
author | Joey Hess <joeyh@joeyh.name> | 2016-07-26 19:50:02 -0400 |
---|---|---|
committer | Joey Hess <joeyh@joeyh.name> | 2016-07-26 19:50:02 -0400 |
commit | c4da1f5244b506a36c129dc577ba777b78b486c7 (patch) | |
tree | 3b13f2e0f0f7f9bd28fd4a7d54ffb6dba294c9dd /Command/MetaData.hs | |
parent | bcc5ee4f322a139ee7cef2bae1fc9bea9f5398ca (diff) |
improved use of Aeson for JSONActionItem
Diffstat (limited to 'Command/MetaData.hs')
-rw-r--r-- | Command/MetaData.hs | 13 |
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) |