From 6cc2e5011682adb0052705040b1d82d81c1fcf33 Mon Sep 17 00:00:00 2001
From: Michael Kriese <michael.kriese@visualon.de>
Date: Thu, 11 Feb 2021 10:29:42 +0100
Subject: [PATCH] fix: reduce code issues (#8639)

Co-authored-by: Charles Korn <charleskorn@users.noreply.github.com>
---
 .../__fixtures__/{Dockerfile1 => 1.Dockerfile} |  0
 .../__fixtures__/{Dockerfile2 => 2.Dockerfile} | 12 +-----------
 .../__snapshots__/extract.spec.ts.snap         | 18 ------------------
 lib/manager/dockerfile/extract.spec.ts         |  6 +++---
 lib/manager/dockerfile/extract.ts              |  4 ++--
 lib/manager/gradle-lite/utils.spec.ts          |  1 +
 lib/manager/gradle-lite/utils.ts               |  2 +-
 7 files changed, 8 insertions(+), 35 deletions(-)
 rename lib/manager/dockerfile/__fixtures__/{Dockerfile1 => 1.Dockerfile} (100%)
 rename lib/manager/dockerfile/__fixtures__/{Dockerfile2 => 2.Dockerfile} (82%)

diff --git a/lib/manager/dockerfile/__fixtures__/Dockerfile1 b/lib/manager/dockerfile/__fixtures__/1.Dockerfile
similarity index 100%
rename from lib/manager/dockerfile/__fixtures__/Dockerfile1
rename to lib/manager/dockerfile/__fixtures__/1.Dockerfile
diff --git a/lib/manager/dockerfile/__fixtures__/Dockerfile2 b/lib/manager/dockerfile/__fixtures__/2.Dockerfile
similarity index 82%
rename from lib/manager/dockerfile/__fixtures__/Dockerfile2
rename to lib/manager/dockerfile/__fixtures__/2.Dockerfile
index 2c2320d277..7d183600c4 100644
--- a/lib/manager/dockerfile/__fixtures__/Dockerfile2
+++ b/lib/manager/dockerfile/__fixtures__/2.Dockerfile
@@ -21,23 +21,13 @@ FROM\
 COPY --from=image6 /path/1 /path/2
 
  COPY \
+	# comment1
 	--from=image7:1.0.0@sha256:abcdef \
 	/path/1 \
 	/path/2
 
 # COPY --from=image8
 
-COPY   --from=image9
-
-COPY\
-    --chown=root \
-	# comment1
-#
- #comment2
- --from=image10
-	# comment2
-    path1 path2
-
 COPY --chown=root --from=image11 / ./
 
 	COPY 	\
diff --git a/lib/manager/dockerfile/__snapshots__/extract.spec.ts.snap b/lib/manager/dockerfile/__snapshots__/extract.spec.ts.snap
index 7c0f296961..69e2aacbd4 100644
--- a/lib/manager/dockerfile/__snapshots__/extract.spec.ts.snap
+++ b/lib/manager/dockerfile/__snapshots__/extract.spec.ts.snap
@@ -89,24 +89,6 @@ Array [
     "depType": "stage",
     "replaceString": "image7:1.0.0@sha256:abcdef",
   },
-  Object {
-    "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}",
-    "currentDigest": undefined,
-    "currentValue": undefined,
-    "datasource": "docker",
-    "depName": "image9",
-    "depType": "stage",
-    "replaceString": "image9",
-  },
-  Object {
-    "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}",
-    "currentDigest": undefined,
-    "currentValue": undefined,
-    "datasource": "docker",
-    "depName": "image10",
-    "depType": "stage",
-    "replaceString": "image10",
-  },
   Object {
     "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}",
     "currentDigest": undefined,
diff --git a/lib/manager/dockerfile/extract.spec.ts b/lib/manager/dockerfile/extract.spec.ts
index 347664ebde..b612546790 100644
--- a/lib/manager/dockerfile/extract.spec.ts
+++ b/lib/manager/dockerfile/extract.spec.ts
@@ -2,12 +2,12 @@ import { readFileSync } from 'fs';
 import { extractPackageFile, getDep } from './extract';
 
 const d1 = readFileSync(
-  'lib/manager/dockerfile/__fixtures__/Dockerfile1',
+  'lib/manager/dockerfile/__fixtures__/1.Dockerfile',
   'utf8'
 );
 
 const d2 = readFileSync(
-  'lib/manager/dockerfile/__fixtures__/Dockerfile2',
+  'lib/manager/dockerfile/__fixtures__/2.Dockerfile',
   'utf8'
 );
 
@@ -150,7 +150,7 @@ describe('lib/manager/dockerfile/extract', () => {
     it('extracts images from all sorts of (maybe multiline) FROM and COPY --from statements', () => {
       const res = extractPackageFile(d2).deps;
       expect(res).toMatchSnapshot();
-      expect(res).toHaveLength(11);
+      expect(res).toHaveLength(9);
     });
     it('handles calico/node', () => {
       const res = extractPackageFile('FROM calico/node\n').deps;
diff --git a/lib/manager/dockerfile/extract.ts b/lib/manager/dockerfile/extract.ts
index 6705b9ea2a..6019a926b0 100644
--- a/lib/manager/dockerfile/extract.ts
+++ b/lib/manager/dockerfile/extract.ts
@@ -67,7 +67,7 @@ export function extractPackageFile(content: string): PackageFile | null {
   const stageNames: string[] = [];
 
   const fromMatches = content.matchAll(
-    /^[ \t]*FROM(?:\\\r?\n| |\t|#.*\r?\n|-\S+)+(?<image>\S+)(?:(?:\\\r?\n| |\t|#.*\r?\n)+as[ \t]+(?<name>\S+))?/gim
+    /^[ \t]*FROM(?:\\\r?\n| |\t|#.*?\r?\n|[ \t]--[a-z]+=\w+?)*[ \t](?<image>\S+)(?:(?:\\\r?\n| |\t|#.*\r?\n)+as[ \t]+(?<name>\S+))?/gim
   );
 
   for (const fromMatch of fromMatches) {
@@ -94,7 +94,7 @@ export function extractPackageFile(content: string): PackageFile | null {
   }
 
   const copyFromMatches = content.matchAll(
-    /^[ \t]*COPY(?:\\\r?\n| |\t|#.*\r?\n|-\S+)+--from=(?<image>\S+)/gim
+    /^[ \t]*COPY(?:\\\r?\n| |\t|#.*\r?\n|[ \t]--[a-z]+=\w+?)*[ \t]--from=(?<image>\S+)/gim
   );
 
   for (const copyFromMatch of copyFromMatches) {
diff --git a/lib/manager/gradle-lite/utils.spec.ts b/lib/manager/gradle-lite/utils.spec.ts
index 9f014b1e49..639128ca96 100644
--- a/lib/manager/gradle-lite/utils.spec.ts
+++ b/lib/manager/gradle-lite/utils.spec.ts
@@ -42,6 +42,7 @@ describe('manager/gradle-lite/utils', () => {
     expect(isDependencyString("foo:bar:1.2.3'")).toBe(false);
     expect(isDependencyString('foo:bar:1.2.3"')).toBe(false);
     expect(isDependencyString('-Xep:ParameterName:OFF')).toBe(false);
+    expect(isDependencyString('foo$bar:baz:1.2.+')).toBe(false);
   });
 
   it('parseDependencyString', () => {
diff --git a/lib/manager/gradle-lite/utils.ts b/lib/manager/gradle-lite/utils.ts
index daf53ca4fc..3731d895d8 100644
--- a/lib/manager/gradle-lite/utils.ts
+++ b/lib/manager/gradle-lite/utils.ts
@@ -10,7 +10,7 @@ import {
 } from './common';
 
 const artifactRegex = regEx(
-  '^[a-zA-Z][-_a-zA-Z0-9]*(?:.[a-zA-Z0-9][-_a-zA-Z0-9]*)*$'
+  '^[a-zA-Z][-_a-zA-Z0-9]*(?:\\.[a-zA-Z0-9][-_a-zA-Z0-9]*?)*$'
 );
 
 const versionLikeRegex = regEx('^(?<version>[-.\\[\\](),a-zA-Z0-9+]+)');
-- 
GitLab