diff options
author | Joey Hess <joey@kitenet.net> | 2012-11-25 17:54:08 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2012-11-25 17:54:08 -0400 |
commit | a9c5a30db304e9d84c4d3c17d075f16db69cd278 (patch) | |
tree | a6ffc8d972730ef4ad78d40ae0299f0d440d821e /Messages.hs | |
parent | 8a1831845f48062745f9b901c0bb9d060450c564 (diff) |
Display a warning when a non-existing file or directory is specified.
Diffstat (limited to 'Messages.hs')
-rw-r--r-- | Messages.hs | 26 |
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 |