From 511fef8135ae71beedfe95217e0ac19d674b3972 Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Fri, 29 Jun 2018 09:02:49 +0200
Subject: [PATCH] refactor: use docker versioning

Initially docker versioning is just a node semver wrapper, but it will later be expanded with custom support for docker-specific version tags.
---
 lib/manager/circleci/extract.js               |  2 +-
 lib/manager/docker-compose/extract.js         |  2 +-
 lib/manager/docker/extract.js                 |  2 +-
 lib/versioning/docker/index.js                |  5 +++
 lib/versioning/index.js                       |  2 ++
 .../__snapshots__/extract.spec.js.snap        |  8 ++---
 .../__snapshots__/extract.spec.js.snap        | 14 ++++----
 .../docker/__snapshots__/extract.spec.js.snap | 34 +++++++++----------
 8 files changed, 38 insertions(+), 31 deletions(-)
 create mode 100644 lib/versioning/docker/index.js

diff --git a/lib/manager/circleci/extract.js b/lib/manager/circleci/extract.js
index 9eef2a7613..bbf5a6ba52 100644
--- a/lib/manager/circleci/extract.js
+++ b/lib/manager/circleci/extract.js
@@ -34,7 +34,7 @@ function extractDependencies(content) {
         currentDigest,
         depName,
         currentTag,
-        versionScheme: 'semver',
+        versionScheme: 'docker',
       };
       if (depName === 'node' || depName.endsWith('/node')) {
         dep.commitMessageTopic = 'Node.js';
diff --git a/lib/manager/docker-compose/extract.js b/lib/manager/docker-compose/extract.js
index f892923f2f..194a8adcf8 100644
--- a/lib/manager/docker-compose/extract.js
+++ b/lib/manager/docker-compose/extract.js
@@ -33,7 +33,7 @@ function extractDependencies(content) {
         currentDigest,
         depName,
         currentTag,
-        versionScheme: 'semver',
+        versionScheme: 'docker',
       };
       if (depName === 'node' || depName.endsWith('/node')) {
         dep.commitMessageTopic = 'Node.js';
diff --git a/lib/manager/docker/extract.js b/lib/manager/docker/extract.js
index d15e1e720e..e36073f3bc 100644
--- a/lib/manager/docker/extract.js
+++ b/lib/manager/docker/extract.js
@@ -82,7 +82,7 @@ function extractDependencies(content) {
         currentDigest,
         depName,
         currentTag,
-        versionScheme: 'semver',
+        versionScheme: 'docker',
       };
       if (depName === 'node' || depName.endsWith('/node')) {
         dep.commitMessageTopic = 'Node.js';
diff --git a/lib/versioning/docker/index.js b/lib/versioning/docker/index.js
new file mode 100644
index 0000000000..9017641c68
--- /dev/null
+++ b/lib/versioning/docker/index.js
@@ -0,0 +1,5 @@
+const semver = require('../semver');
+
+module.exports = {
+  ...semver,
+};
diff --git a/lib/versioning/index.js b/lib/versioning/index.js
index 7cad3bb8c0..cab16eeefa 100644
--- a/lib/versioning/index.js
+++ b/lib/versioning/index.js
@@ -1,8 +1,10 @@
+const docker = require('./docker');
 const semver = require('./semver');
 const semverComposer = require('./semver-composer');
 const pep440 = require('./pep440');
 
 const schemes = {
+  docker,
   semver,
   semverComposer,
   pep440,
diff --git a/test/manager/circleci/__snapshots__/extract.spec.js.snap b/test/manager/circleci/__snapshots__/extract.spec.js.snap
index df914446e3..da58667e25 100644
--- a/test/manager/circleci/__snapshots__/extract.spec.js.snap
+++ b/test/manager/circleci/__snapshots__/extract.spec.js.snap
@@ -13,7 +13,7 @@ Array [
     "dockerRegistry": undefined,
     "fromVersion": "node",
     "lineNumber": 12,
-    "versionScheme": "semver",
+    "versionScheme": "docker",
   },
   Object {
     "commitMessageTopic": "Node.js",
@@ -26,7 +26,7 @@ Array [
     "dockerRegistry": undefined,
     "fromVersion": "node:4",
     "lineNumber": 57,
-    "versionScheme": "semver",
+    "versionScheme": "docker",
   },
   Object {
     "commitMessageTopic": "Node.js",
@@ -39,7 +39,7 @@ Array [
     "dockerRegistry": undefined,
     "fromVersion": "node:6",
     "lineNumber": 61,
-    "versionScheme": "semver",
+    "versionScheme": "docker",
   },
   Object {
     "commitMessageTopic": "Node.js",
@@ -52,7 +52,7 @@ Array [
     "dockerRegistry": undefined,
     "fromVersion": "node:8.9.0",
     "lineNumber": 65,
-    "versionScheme": "semver",
+    "versionScheme": "docker",
   },
 ]
 `;
diff --git a/test/manager/docker-compose/__snapshots__/extract.spec.js.snap b/test/manager/docker-compose/__snapshots__/extract.spec.js.snap
index 2a1c4ab1d3..2edb4b6264 100644
--- a/test/manager/docker-compose/__snapshots__/extract.spec.js.snap
+++ b/test/manager/docker-compose/__snapshots__/extract.spec.js.snap
@@ -11,7 +11,7 @@ Array [
     "depName": "something/redis",
     "dockerRegistry": "quay.io",
     "lineNumber": 4,
-    "versionScheme": "semver",
+    "versionScheme": "docker",
   },
   Object {
     "commitMessageTopic": "Node.js",
@@ -23,7 +23,7 @@ Array [
     "depName": "node",
     "dockerRegistry": undefined,
     "lineNumber": 18,
-    "versionScheme": "semver",
+    "versionScheme": "docker",
   },
   Object {
     "currentDepTag": "postgres:9.4.0",
@@ -34,7 +34,7 @@ Array [
     "depName": "postgres",
     "dockerRegistry": undefined,
     "lineNumber": 21,
-    "versionScheme": "semver",
+    "versionScheme": "docker",
   },
   Object {
     "currentDepTag": "dockersamples/examplevotingapp_vote:before",
@@ -45,7 +45,7 @@ Array [
     "depName": "dockersamples/examplevotingapp_vote",
     "dockerRegistry": undefined,
     "lineNumber": 31,
-    "versionScheme": "semver",
+    "versionScheme": "docker",
   },
   Object {
     "currentDepTag": "dockersamples/examplevotingapp_result:before",
@@ -56,7 +56,7 @@ Array [
     "depName": "dockersamples/examplevotingapp_result",
     "dockerRegistry": undefined,
     "lineNumber": 46,
-    "versionScheme": "semver",
+    "versionScheme": "docker",
   },
   Object {
     "currentDepTag": "dockersamples/examplevotingapp_worker",
@@ -67,7 +67,7 @@ Array [
     "depName": "dockersamples/examplevotingapp_worker",
     "dockerRegistry": undefined,
     "lineNumber": 62,
-    "versionScheme": "semver",
+    "versionScheme": "docker",
   },
   Object {
     "currentDepTag": "dockersamples/visualizer:stable",
@@ -78,7 +78,7 @@ Array [
     "depName": "dockersamples/visualizer",
     "dockerRegistry": undefined,
     "lineNumber": 79,
-    "versionScheme": "semver",
+    "versionScheme": "docker",
   },
 ]
 `;
diff --git a/test/manager/docker/__snapshots__/extract.spec.js.snap b/test/manager/docker/__snapshots__/extract.spec.js.snap
index da77b141ec..4f8c8c799e 100644
--- a/test/manager/docker/__snapshots__/extract.spec.js.snap
+++ b/test/manager/docker/__snapshots__/extract.spec.js.snap
@@ -15,7 +15,7 @@ Array [
     "fromPrefix": "FROM",
     "fromSuffix": "AS node",
     "language": "docker",
-    "versionScheme": "semver",
+    "versionScheme": "docker",
   },
   Object {
     "currentDepTag": "buildkite/puppeteer:1.1.1",
@@ -29,7 +29,7 @@ Array [
     "fromPrefix": "FROM",
     "fromSuffix": "AS puppeteer",
     "language": "docker",
-    "versionScheme": "semver",
+    "versionScheme": "docker",
   },
 ]
 `;
@@ -49,7 +49,7 @@ Array [
     "fromPrefix": "FROM",
     "fromSuffix": "as frontend",
     "language": "docker",
-    "versionScheme": "semver",
+    "versionScheme": "docker",
   },
   Object {
     "currentDepTag": "python:3.6-slim",
@@ -63,7 +63,7 @@ Array [
     "fromPrefix": "FROM",
     "fromSuffix": "",
     "language": "docker",
-    "versionScheme": "semver",
+    "versionScheme": "docker",
   },
 ]
 `;
@@ -83,7 +83,7 @@ Array [
     "fromPrefix": "FROM",
     "fromSuffix": "",
     "language": "docker",
-    "versionScheme": "semver",
+    "versionScheme": "docker",
   },
 ]
 `;
@@ -103,7 +103,7 @@ Array [
     "fromPrefix": "FROM",
     "fromSuffix": "",
     "language": "docker",
-    "versionScheme": "semver",
+    "versionScheme": "docker",
   },
 ]
 `;
@@ -123,7 +123,7 @@ Array [
     "fromPrefix": "FROM",
     "fromSuffix": "",
     "language": "docker",
-    "versionScheme": "semver",
+    "versionScheme": "docker",
   },
 ]
 `;
@@ -143,7 +143,7 @@ Array [
     "fromPrefix": "FROM",
     "fromSuffix": "",
     "language": "docker",
-    "versionScheme": "semver",
+    "versionScheme": "docker",
   },
 ]
 `;
@@ -163,7 +163,7 @@ Array [
     "fromPrefix": "FROM",
     "fromSuffix": "",
     "language": "docker",
-    "versionScheme": "semver",
+    "versionScheme": "docker",
   },
 ]
 `;
@@ -183,7 +183,7 @@ Array [
     "fromPrefix": "FROM",
     "fromSuffix": "",
     "language": "docker",
-    "versionScheme": "semver",
+    "versionScheme": "docker",
   },
 ]
 `;
@@ -203,7 +203,7 @@ Array [
     "fromPrefix": "FROM",
     "fromSuffix": "as base",
     "language": "docker",
-    "versionScheme": "semver",
+    "versionScheme": "docker",
   },
 ]
 `;
@@ -223,7 +223,7 @@ Array [
     "fromPrefix": "FROM",
     "fromSuffix": "",
     "language": "docker",
-    "versionScheme": "semver",
+    "versionScheme": "docker",
   },
 ]
 `;
@@ -243,7 +243,7 @@ Array [
     "fromPrefix": "FROM",
     "fromSuffix": "",
     "language": "docker",
-    "versionScheme": "semver",
+    "versionScheme": "docker",
   },
 ]
 `;
@@ -263,7 +263,7 @@ Array [
     "fromPrefix": "FROM",
     "fromSuffix": "",
     "language": "docker",
-    "versionScheme": "semver",
+    "versionScheme": "docker",
   },
 ]
 `;
@@ -283,7 +283,7 @@ Array [
     "fromPrefix": "FROM",
     "fromSuffix": "",
     "language": "docker",
-    "versionScheme": "semver",
+    "versionScheme": "docker",
   },
 ]
 `;
@@ -303,7 +303,7 @@ Array [
     "fromPrefix": "From",
     "fromSuffix": "",
     "language": "docker",
-    "versionScheme": "semver",
+    "versionScheme": "docker",
   },
 ]
 `;
@@ -323,7 +323,7 @@ Array [
     "fromPrefix": "FROM",
     "fromSuffix": "as frontend",
     "language": "docker",
-    "versionScheme": "semver",
+    "versionScheme": "docker",
   },
 ]
 `;
-- 
GitLab