From e97cd57e1ac72d5a240852704ebaf92716fcad94 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 20 Jul 2016 14:03:54 -0400 Subject: more generic showStart' --- Messages.hs | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) (limited to 'Messages.hs') 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 + - Copyright 2010-2016 Joey Hess - - 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 ++ ") " -- cgit v1.2.3