From 791d0803bee619306e8d609b42d0f1cedebbedb1 Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Wed, 14 Aug 2019 11:34:20 +0200
Subject: [PATCH] fix(docker-compose): catch extract errors gracefully

---
 lib/manager/docker-compose/extract.ts | 36 ++++++++++++++++-----------
 1 file changed, 22 insertions(+), 14 deletions(-)

diff --git a/lib/manager/docker-compose/extract.ts b/lib/manager/docker-compose/extract.ts
index b003478255..549f2f9220 100644
--- a/lib/manager/docker-compose/extract.ts
+++ b/lib/manager/docker-compose/extract.ts
@@ -55,22 +55,30 @@ export function extractPackageFile(
     logger.warn({ fileName, err }, 'Parsing Docker Compose config YAML');
     return null;
   }
-  const lineMapper = new LineMapper(content, /^\s*image:/);
+  try {
+    const lineMapper = new LineMapper(content, /^\s*image:/);
 
-  // Image name/tags for services are only eligible for update if they don't
-  // use variables and if the image is not built locally
-  const deps = Object.values(config.services || {})
-    .filter(service => service.image && !service.build)
-    .map(service => {
-      const dep = getDep(service.image);
-      const lineNumber = lineMapper.pluckLineNumber(service.image);
-      dep.managerData = { lineNumber };
-      return dep;
-    });
+    // Image name/tags for services are only eligible for update if they don't
+    // use variables and if the image is not built locally
+    const deps = Object.values(config.services || {})
+      .filter(service => service.image && !service.build)
+      .map(service => {
+        const dep = getDep(service.image);
+        const lineNumber = lineMapper.pluckLineNumber(service.image);
+        dep.managerData = { lineNumber };
+        return dep;
+      });
 
-  logger.trace({ deps }, 'Docker Compose image');
-  if (!deps.length) {
+    logger.trace({ deps }, 'Docker Compose image');
+    if (!deps.length) {
+      return null;
+    }
+    return { deps };
+  } catch (err) /* istanbul ignore next */ {
+    logger.warn(
+      { fileName, content, err },
+      'Error extracting Docker Compose file'
+    );
     return null;
   }
-  return { deps };
 }
-- 
GitLab