diff --git a/lib/datasource/github.js b/lib/datasource/github.js index 518612cd7418311c02710f8db5b01c1d9961ddb0..25fd0d44ad12eac75daae5cd28a8a254f468b719 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 45849232e9986c4f0ad2ad4ca1b0deefa5428e30..ece74e261417256f10fc758ce95b79a1f9f2b903 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 035ae0b885e0d1788a8b11fda9e4d4ac7202433b..d0cd360adc40c8686ec5a6a0b44ced47037cce97 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 1d55191f9e331fb2dd6a72a990281f647081a15c..8ee9f7e5a855e6c379129735d71111a8c2695a45 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 ff4d4be42f66c2eadcdcc0e1a1308d21a0bf211f..8cbb8f381f04d6d77bcbcb55d7433d853992a987 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 0000000000000000000000000000000000000000..f08f9862e6ad811af7613b5813c6e62f98427141 --- /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 0000000000000000000000000000000000000000..8dcfd0eb588d2eda9ab75fa731897f647be319de --- /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 31aa5babc45a9d193d7909bac1ecb72500f89930..6a6d76ce585f8f23a155fc3c06612f355fccace9 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); });