From c54d0ab69d51ec8898dca46d2eaf3640ffd58ae2 Mon Sep 17 00:00:00 2001 From: Ayoub Kaanich <kayoub5@live.com> Date: Sun, 3 Jun 2018 17:00:58 +0200 Subject: [PATCH] refactor: add versioning wrapper --- lib/datasource/github.js | 4 +++- lib/manager/buildkite/extract.js | 4 +++- lib/manager/docker/package.js | 3 ++- lib/manager/npm/extract/index.js | 4 +++- lib/manager/travis/package.js | 7 +++---- lib/versioning/index.js | 14 ++++++++++++++ test/versioning/index.spec.js | 8 ++++++++ test/{util => versioning}/semver.spec.js | 6 +++--- 8 files changed, 39 insertions(+), 11 deletions(-) create mode 100644 lib/versioning/index.js create mode 100644 test/versioning/index.spec.js rename test/{util => versioning}/semver.spec.js (89%) diff --git a/lib/datasource/github.js b/lib/datasource/github.js index 518612cd74..25fd0d44ad 100644 --- a/lib/datasource/github.js +++ b/lib/datasource/github.js @@ -1,5 +1,7 @@ const ghGot = require('../platform/github/gh-got-wrapper'); -const { isPinnedVersion } = require('../versioning/semver'); +const versioning = require('../versioning'); + +const { isPinnedVersion } = versioning('semver'); module.exports = { getDependency, diff --git a/lib/manager/buildkite/extract.js b/lib/manager/buildkite/extract.js index 45849232e9..ece74e2614 100644 --- a/lib/manager/buildkite/extract.js +++ b/lib/manager/buildkite/extract.js @@ -1,4 +1,6 @@ -const { isPinnedVersion } = require('../../versioning/semver'); +const versioning = require('../../versioning'); + +const { isPinnedVersion } = versioning('semver'); module.exports = { extractDependencies, diff --git a/lib/manager/docker/package.js b/lib/manager/docker/package.js index 035ae0b885..d0cd360adc 100644 --- a/lib/manager/docker/package.js +++ b/lib/manager/docker/package.js @@ -1,4 +1,4 @@ -const { getMajor, isValid } = require('../../versioning/semver'); +const versioning = require('../../versioning'); const dockerApi = require('../../datasource/docker'); const compareVersions = require('compare-versions'); @@ -18,6 +18,7 @@ async function getPackageUpdates(config) { unstablePattern, ignoreUnstable, } = config; + const { getMajor, isValid } = versioning('semver'); const upgrades = []; if (currentDigest || config.pinDigests) { logger.debug('Checking docker pinDigests'); diff --git a/lib/manager/npm/extract/index.js b/lib/manager/npm/extract/index.js index 1d55191f9e..8ee9f7e5a8 100644 --- a/lib/manager/npm/extract/index.js +++ b/lib/manager/npm/extract/index.js @@ -3,7 +3,9 @@ const upath = require('upath'); const { getLockedVersions } = require('./locked-versions'); const { detectMonorepos } = require('./monorepo'); const { mightBeABrowserLibrary } = require('./type'); -const semver = require('../../../versioning/semver'); +const versioning = require('../../../versioning'); + +const semver = versioning('semver'); module.exports = { extractDependencies, diff --git a/lib/manager/travis/package.js b/lib/manager/travis/package.js index ff4d4be42f..8cbb8f381f 100644 --- a/lib/manager/travis/package.js +++ b/lib/manager/travis/package.js @@ -1,9 +1,8 @@ const { isEqual } = require('lodash'); const { getDependency } = require('../../datasource/github'); -const { - isPinnedVersion, - maxSatisfyingVersion, -} = require('../../versioning/semver'); +const versioning = require('../../versioning'); + +const { isPinnedVersion, maxSatisfyingVersion } = versioning('semver'); module.exports = { getPackageUpdates, diff --git a/lib/versioning/index.js b/lib/versioning/index.js new file mode 100644 index 0000000000..f08f9862e6 --- /dev/null +++ b/lib/versioning/index.js @@ -0,0 +1,14 @@ +const semver = require('./semver'); + +const schemes = { + semver, +}; + +module.exports = function getVersionScheme(versionScheme) { + const scheme = schemes[versionScheme]; + if (!scheme) { + logger.warn({ versionScheme }, 'Unknown verion scheme'); + return semver; + } + return scheme; +}; diff --git a/test/versioning/index.spec.js b/test/versioning/index.spec.js new file mode 100644 index 0000000000..8dcfd0eb58 --- /dev/null +++ b/test/versioning/index.spec.js @@ -0,0 +1,8 @@ +const versioning = require('../../lib/versioning'); + +describe('versioning(versionScheme)', () => { + it('should fallback to semver', () => { + expect(versioning(undefined)).toBe(versioning('semver')); + expect(versioning('unknown')).toBe(versioning('semver')); + }); +}); diff --git a/test/util/semver.spec.js b/test/versioning/semver.spec.js similarity index 89% rename from test/util/semver.spec.js rename to test/versioning/semver.spec.js index 31aa5babc4..6a6d76ce58 100644 --- a/test/util/semver.spec.js +++ b/test/versioning/semver.spec.js @@ -1,6 +1,6 @@ -const semver = require('../../lib/versioning/semver'); +const semver = require('../../lib/versioning')('semver'); -describe('.isValid(input)', () => { +describe('semver.isValid(input)', () => { it('should return null for irregular versions', () => { expect(!!semver.isValid('17.04.0')).toBe(false); }); @@ -26,7 +26,7 @@ describe('.isValid(input)', () => { ).toBe(false); }); }); -describe('.isRange(input)', () => { +describe('semver.isRange(input)', () => { it('rejects simple semver', () => { expect(!!semver.isRange('1.2.3')).toBe(false); }); -- GitLab