diff options
-rw-r--r-- | Command/DropKey.hs | 2 | ||||
-rw-r--r-- | Command/SetPresentKey.hs | 2 | ||||
-rw-r--r-- | Messages.hs | 28 |
3 files changed, 26 insertions, 6 deletions
diff --git a/Command/DropKey.hs b/Command/DropKey.hs index 15d5403a8..9a9d51354 100644 --- a/Command/DropKey.hs +++ b/Command/DropKey.hs @@ -42,7 +42,7 @@ seek o = do start :: Key -> CommandStart start key = do - showStart' "dropkey" key Nothing + showStart' "dropkey" key key next $ perform key perform :: Key -> CommandPerform diff --git a/Command/SetPresentKey.hs b/Command/SetPresentKey.hs index 35ede9553..73847792d 100644 --- a/Command/SetPresentKey.hs +++ b/Command/SetPresentKey.hs @@ -23,7 +23,7 @@ seek = withWords start start :: [String] -> CommandStart start (ks:us:vs:[]) = do - showStart' "setpresentkey" k Nothing + showStart' "setpresentkey" k k next $ perform k (toUUID us) s where k = fromMaybe (error "bad key") (file2key ks) diff --git a/Messages.hs b/Messages.hs index 57541cfc0..6851729ae 100644 --- a/Messages.hs +++ b/Messages.hs @@ -1,10 +1,12 @@ {- git-annex output messages - - - Copyright 2010-2014 Joey Hess <id@joeyh.name> + - Copyright 2010-2016 Joey Hess <id@joeyh.name> - - Licensed under the GNU GPL version 3 or higher. -} +{-# LANGUAGE TypeSynonymInstances, FlexibleInstances #-} + module Messages ( showStart, showStart', @@ -57,9 +59,27 @@ showStart :: String -> FilePath -> Annex () showStart command file = outputMessage (JSON.start command (Just file) Nothing) $ command ++ " " ++ file ++ " " -showStart' :: String -> Key -> Maybe FilePath -> Annex () -showStart' command key afile = outputMessage (JSON.start command afile (Just key)) $ - command ++ " " ++ fromMaybe (key2file key) afile ++ " " +class ActionItem i where + actionItemDesc :: i -> Key -> String + actionItemWorkTreeFile :: i -> Maybe FilePath + +instance ActionItem FilePath where + actionItemDesc f _ = f + actionItemWorkTreeFile = Just + +instance ActionItem AssociatedFile where + actionItemDesc (Just f) _ = f + actionItemDesc Nothing k = key2file k + actionItemWorkTreeFile = id + +instance ActionItem Key where + actionItemDesc k _ = key2file k + actionItemWorkTreeFile _ = Nothing + +showStart' :: ActionItem i => String -> Key -> i -> Annex () +showStart' command key i = + outputMessage (JSON.start command (actionItemWorkTreeFile i) (Just key)) $ + command ++ " " ++ actionItemDesc i key ++ " " showNote :: String -> Annex () showNote s = outputMessage (JSON.note s) $ "(" ++ s ++ ") " |