From 6b12fc4ea433e9c3a750c1705a4706c3effd2fa9 Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Sat, 8 Dec 2018 16:46:06 +0100
Subject: [PATCH] refactor(versioning): use get function

---
 lib/datasource/github.js                          |  2 +-
 lib/util/package-rules.js                         |  2 +-
 lib/versioning/index.js                           |  9 +++++++--
 lib/workers/pr/changelog/index.js                 |  2 +-
 lib/workers/pr/changelog/source-github.js         |  4 ++--
 lib/workers/pr/pr-body.js                         |  2 +-
 lib/workers/repository/process/lookup/filter.js   |  2 +-
 lib/workers/repository/process/lookup/index.js    | 12 +++++++-----
 lib/workers/repository/process/lookup/rollback.js |  9 ++++++---
 test/versioning/index.spec.js                     | 10 +++++-----
 10 files changed, 32 insertions(+), 22 deletions(-)

diff --git a/lib/datasource/github.js b/lib/datasource/github.js
index fc4c556659..7c52535800 100644
--- a/lib/datasource/github.js
+++ b/lib/datasource/github.js
@@ -128,7 +128,7 @@ async function getPkgReleases(purl, config) {
     return null;
   }
   // Filter by semver if no versionScheme provided
-  const { isVersion, sortVersions } = versioning(versionScheme);
+  const { isVersion, sortVersions } = versioning.get(versionScheme);
   // Return a sorted list of valid Versions
   versions = versions.filter(isVersion).sort(sortVersions);
   const dependency = {
diff --git a/lib/util/package-rules.js b/lib/util/package-rules.js
index 7fbd6a2394..b9b340ce3f 100644
--- a/lib/util/package-rules.js
+++ b/lib/util/package-rules.js
@@ -112,7 +112,7 @@ function applyPackageRules(inputConfig) {
       positiveMatch = positiveMatch || !isMatch;
     }
     if (matchCurrentVersion) {
-      const { matches, isVersion } = versioning(versionScheme);
+      const { matches, isVersion } = versioning.get(versionScheme);
       const compareVersion = isVersion(currentValue)
         ? currentValue // it's a version so we can match against it
         : fromVersion; // need to match against this fromVersion, if available
diff --git a/lib/versioning/index.js b/lib/versioning/index.js
index 3ef4836e05..8721b5aedd 100644
--- a/lib/versioning/index.js
+++ b/lib/versioning/index.js
@@ -14,7 +14,12 @@ const schemes = {
   pep440,
 };
 
-module.exports = function getVersionScheme(versionScheme) {
+module.exports = {
+  get,
+  schemes,
+};
+
+function get(versionScheme) {
   if (!versionScheme) {
     logger.debug('Missing versionScheme');
     return semver;
@@ -25,4 +30,4 @@ module.exports = function getVersionScheme(versionScheme) {
     return semver;
   }
   return scheme;
-};
+}
diff --git a/lib/workers/pr/changelog/index.js b/lib/workers/pr/changelog/index.js
index 2760424266..bd2f537db1 100644
--- a/lib/workers/pr/changelog/index.js
+++ b/lib/workers/pr/changelog/index.js
@@ -14,7 +14,7 @@ async function getChangeLogJSON(args) {
   // releases is too noisy in the logs
   const { releases, ...param } = args;
   logger.debug({ args: param }, `getChangeLogJSON(args)`);
-  const { equals } = versioning(versionScheme);
+  const { equals } = versioning.get(versionScheme);
   if (!fromVersion || equals(fromVersion, toVersion)) {
     return null;
   }
diff --git a/lib/workers/pr/changelog/source-github.js b/lib/workers/pr/changelog/source-github.js
index b59964ed48..c3369b154e 100644
--- a/lib/workers/pr/changelog/source-github.js
+++ b/lib/workers/pr/changelog/source-github.js
@@ -9,7 +9,7 @@ module.exports = {
 };
 
 async function getTags(endpoint, versionScheme, repository) {
-  const { isVersion } = versioning(versionScheme);
+  const { isVersion } = versioning.get(versionScheme);
   let url = endpoint
     ? endpoint.replace(/\/?$/, '/')
     : 'https://api.github.com/';
@@ -49,7 +49,7 @@ async function getChangeLogJSON({
     logger.debug('No release notes for @types');
     return null;
   }
-  const { isVersion, equals, isGreaterThan, sortVersions } = versioning(
+  const { isVersion, equals, isGreaterThan, sortVersions } = versioning.get(
     versionScheme
   );
   const { protocol, host, pathname } = URL.parse(repositoryUrl);
diff --git a/lib/workers/pr/pr-body.js b/lib/workers/pr/pr-body.js
index e51eb010ae..723fcd08cd 100644
--- a/lib/workers/pr/pr-body.js
+++ b/lib/workers/pr/pr-body.js
@@ -60,7 +60,7 @@ async function getPrBody(config) {
     // istanbul ignore if
     if (updateType === 'minor') {
       try {
-        const { getMinor } = versioning(versionScheme);
+        const { getMinor } = versioning.get(versionScheme);
         if (getMinor(fromVersion) === getMinor(toVersion)) {
           upgrade.updateType = 'patch';
         }
diff --git a/lib/workers/repository/process/lookup/filter.js b/lib/workers/repository/process/lookup/filter.js
index b28a2e4687..2cb6eca5aa 100644
--- a/lib/workers/repository/process/lookup/filter.js
+++ b/lib/workers/repository/process/lookup/filter.js
@@ -26,7 +26,7 @@ function filterVersions(
     isStable,
     isValid,
     matches,
-  } = versioning(versionScheme);
+  } = versioning.get(versionScheme);
   if (!fromVersion) {
     return [];
   }
diff --git a/lib/workers/repository/process/lookup/index.js b/lib/workers/repository/process/lookup/index.js
index dcc7357a27..26e20f1162 100644
--- a/lib/workers/repository/process/lookup/index.js
+++ b/lib/workers/repository/process/lookup/index.js
@@ -26,7 +26,7 @@ async function lookupUpdates(config) {
     isVersion,
     matches,
     getNewValue,
-  } = versioning(config.versionScheme);
+  } = versioning.get(config.versionScheme);
   const res = { updates: [], warnings: [] };
   if (isValid(currentValue)) {
     const dependency = await getPkgReleases(config.purl, config);
@@ -255,7 +255,7 @@ async function lookupUpdates(config) {
 
 function getType(config, fromVersion, toVersion) {
   const { versionScheme, rangeStrategy, currentValue } = config;
-  const { getMajor, getMinor, matches } = versioning(versionScheme);
+  const { getMajor, getMinor, matches } = versioning.get(versionScheme);
   if (rangeStrategy === 'bump' && matches(toVersion, currentValue)) {
     return 'bump';
   }
@@ -292,9 +292,11 @@ function getBucket(config, update) {
 
 function getFromVersion(config, rangeStrategy, allVersions) {
   const { currentValue, lockedVersion, versionScheme } = config;
-  const { isVersion, maxSatisfyingVersion, minSatisfyingVersion } = versioning(
-    versionScheme
-  );
+  const {
+    isVersion,
+    maxSatisfyingVersion,
+    minSatisfyingVersion,
+  } = versioning.get(versionScheme);
   if (isVersion(currentValue)) {
     return currentValue;
   }
diff --git a/lib/workers/repository/process/lookup/rollback.js b/lib/workers/repository/process/lookup/rollback.js
index 713b245399..8755350b2c 100644
--- a/lib/workers/repository/process/lookup/rollback.js
+++ b/lib/workers/repository/process/lookup/rollback.js
@@ -6,9 +6,12 @@ module.exports = {
 
 function getRollbackUpdate(config, versions) {
   const { packageFile, versionScheme, depName, currentValue } = config;
-  const { getMajor, isLessThanRange, getNewValue, sortVersions } = versioning(
-    versionScheme
-  );
+  const {
+    getMajor,
+    isLessThanRange,
+    getNewValue,
+    sortVersions,
+  } = versioning.get(versionScheme);
   // istanbul ignore if
   if (!isLessThanRange) {
     logger.info(
diff --git a/test/versioning/index.spec.js b/test/versioning/index.spec.js
index 9e7fb786b7..0f4e8e885e 100644
--- a/test/versioning/index.spec.js
+++ b/test/versioning/index.spec.js
@@ -1,14 +1,14 @@
 const versioning = require('../../lib/versioning');
 
-describe('versioning(versionScheme)', () => {
+describe('versioning.get(versionScheme)', () => {
   it('should fallback to semver', () => {
-    expect(versioning(undefined)).toBe(versioning('semver'));
-    expect(versioning('unknown')).toBe(versioning('semver'));
+    expect(versioning.get(undefined)).toBe(versioning.get('semver'));
+    expect(versioning.get('unknown')).toBe(versioning.get('semver'));
   });
 
   it('should return the same interface', () => {
-    const semverApi = Object.keys(versioning('semver'));
-    const pep440Api = Object.keys(versioning('pep440')).concat(
+    const semverApi = Object.keys(versioning.get('semver'));
+    const pep440Api = Object.keys(versioning.get('pep440')).concat(
       'isLessThanRange'
     );
     expect(pep440Api.sort()).toEqual(semverApi.sort());
-- 
GitLab