From c5cba6edbcbda2ded8f5a0f3e67c019abf4aba6f Mon Sep 17 00:00:00 2001 From: Echo Nolan Date: Thu, 11 May 2017 17:03:31 -0700 Subject: [PATCH] Fix handling of missing image message with newer versions of Docker At some unknown version, `docker inspect` stopped outputting "Error: No such image" and started outputting "Error: No such object:" when the image is question was missing. That change broke detecting that situation. This commit checks for either version of the message. --- ChangeLog.md | 2 ++ src/Stack/Docker.hs | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/ChangeLog.md b/ChangeLog.md index df69629203..542c056fac 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -73,6 +73,8 @@ Bug fixes: * Switching a package between extra-dep and local package now forces rebuild (previously it wouldn't if versions were the same). See [#2147](https://github.com/commercialhaskell/stack/issues/2147) +* Fixed an issue where Stack wouldn't detect missing Docker images properly + with newer Docker versions. ## 1.4.0 diff --git a/src/Stack/Docker.hs b/src/Stack/Docker.hs index 8a331e7504..860b765e73 100644 --- a/src/Stack/Docker.hs +++ b/src/Stack/Docker.hs @@ -664,8 +664,9 @@ inspects envOverride images = Left msg -> throwM (InvalidInspectOutputException msg) Right results -> return (Map.fromList (map (\r -> (iiId r,r)) results)) Left (ProcessFailed _ _ _ err) - | "Error: No such image" `LBS.isPrefixOf` err -> return Map.empty + | any (`LBS.isPrefixOf` err) missingImagePrefixes -> return Map.empty Left e -> throwM e + where missingImagePrefixes = ["Error: No such image", "Error: No such object:"] -- | Pull latest version of configured Docker image from registry. pull :: (StackM env m, HasConfig env) => m ()