summaryrefslogtreecommitdiff
path: root/Messages.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2012-11-25 17:54:08 -0400
committerGravatar Joey Hess <joey@kitenet.net>2012-11-25 17:54:08 -0400
commita9c5a30db304e9d84c4d3c17d075f16db69cd278 (patch)
treea6ffc8d972730ef4ad78d40ae0299f0d440d821e /Messages.hs
parent8a1831845f48062745f9b901c0bb9d060450c564 (diff)
Display a warning when a non-existing file or directory is specified.
Diffstat (limited to 'Messages.hs')
-rw-r--r--Messages.hs26
1 files changed, 21 insertions, 5 deletions
diff --git a/Messages.hs b/Messages.hs
index 822458143..d75fe6769 100644
--- a/Messages.hs
+++ b/Messages.hs
@@ -23,6 +23,7 @@ module Messages (
showEndResult,
showErr,
warning,
+ fileNotFound,
indent,
maybeShowJSON,
showFullJSON,
@@ -44,6 +45,7 @@ import Types.Messages
import Types.Key
import qualified Annex
import qualified Messages.JSON as JSON
+import qualified Data.Set as S
showStart :: String -> String -> Annex ()
showStart command file = handle (JSON.start command $ Just file) $
@@ -89,11 +91,13 @@ meteredBytes combinemeterupdate size a = withOutputType go
showSideAction :: String -> Annex ()
showSideAction m = Annex.getState Annex.output >>= go
where
- go (MessageState v StartBlock) = do
- p
- Annex.changeState $ \s -> s { Annex.output = MessageState v InBlock }
- go (MessageState _ InBlock) = return ()
- go _ = p
+ go st
+ | sideActionBlock st == StartBlock = do
+ p
+ let st' = st { sideActionBlock = InBlock }
+ Annex.changeState $ \s -> s { Annex.output = st' }
+ | sideActionBlock st == InBlock = return ()
+ | otherwise = p
p = handle q $ putStrLn $ "(" ++ m ++ "...)"
showStoringStateAction :: Annex ()
@@ -150,6 +154,18 @@ warning' w = do
hFlush stdout
hPutStrLn stderr w
+{- Displays a warning one time about a file the user specified not existing. -}
+fileNotFound :: FilePath -> Annex ()
+fileNotFound file = do
+ st <- Annex.getState Annex.output
+ let shown = fileNotFoundShown st
+ when (S.notMember file shown) $ do
+ let shown' = S.insert file shown
+ let st' = st { fileNotFoundShown = shown' }
+ Annex.changeState $ \s -> s { Annex.output = st' }
+ liftIO $ hPutStrLn stderr $ unwords
+ [ "git-annex:", file, "not found" ]
+
indent :: String -> String
indent = join "\n" . map (\l -> " " ++ l) . lines