diff --git a/lib/datasource/github.js b/lib/datasource/github.js index 25fd0d44ad12eac75daae5cd28a8a254f468b719..65f89bfdadfd65b61aff984c4334b8fc1e692160 100644 --- a/lib/datasource/github.js +++ b/lib/datasource/github.js @@ -1,7 +1,7 @@ const ghGot = require('../platform/github/gh-got-wrapper'); const versioning = require('../versioning'); -const { isPinnedVersion } = versioning('semver'); +const { isVersion } = versioning('semver'); module.exports = { getDependency, @@ -50,7 +50,7 @@ async function getDependency(repo, options = {}) { if (!versions) { return null; } - versions = versions.filter(version => isPinnedVersion(version)); + versions = versions.filter(version => isVersion(version)); if (clean) { versions = versions.map(version => version.replace(/^v/, '')); } diff --git a/lib/manager/buildkite/extract.js b/lib/manager/buildkite/extract.js index fd93aa7a0ecbabc8cd6bff796612f7cf96a73ad7..10cbce2e81e7decad72cab442cbaaff4b3f5f2b4 100644 --- a/lib/manager/buildkite/extract.js +++ b/lib/manager/buildkite/extract.js @@ -1,6 +1,6 @@ const versioning = require('../../versioning'); -const { isPinnedVersion } = versioning('semver'); +const { isVersion } = versioning('semver'); module.exports = { extractDependencies, @@ -29,7 +29,7 @@ function extractDependencies(content) { if (depName.startsWith('https://') || depName.startsWith('git@')) { logger.debug({ depName }, 'Skipping git plugin'); skipReason = 'git-plugin'; - } else if (!isPinnedVersion(currentValue)) { + } else if (!isVersion(currentValue)) { logger.debug( { currentValue }, 'Skipping non-pinned current version' diff --git a/lib/manager/nvm/extract.js b/lib/manager/nvm/extract.js index 8c228815e8de92cda48660baedc22f6a10d39c0a..1f598f0a615b9c5afd680559d2b79aba3856efb3 100644 --- a/lib/manager/nvm/extract.js +++ b/lib/manager/nvm/extract.js @@ -11,7 +11,7 @@ function extractDependencies(content) { purl: 'pkg:github/nodejs/node?clean=true', versionScheme: 'semver', }; - if (!semver.isPinnedVersion(dep.currentValue)) { + if (!semver.isVersion(dep.currentValue)) { dep.skipReason = 'unsupported-version'; } return { deps: [dep] }; diff --git a/lib/manager/pip_requirements/package.js b/lib/manager/pip_requirements/package.js index 4fe9090532669b908cd5eba3f3b8f8b24e52d0da..5f2d7350000274b56aa136c1e0b4ab193989a633 100644 --- a/lib/manager/pip_requirements/package.js +++ b/lib/manager/pip_requirements/package.js @@ -2,7 +2,7 @@ const got = require('got'); const { isGreaterThan, sortVersions, - isPinnedVersion, + isVersion, getMajor, } = require('../../versioning/semver'); @@ -14,7 +14,7 @@ async function getPackageUpdates(config) { try { logger.debug('pip_requirements.getPackageUpdates()'); const { currentValue, depName } = config; - if (!isPinnedVersion(currentValue)) { + if (!isVersion(currentValue)) { return []; } const { releases } = (await got(`https://pypi.org/pypi/${depName}/json`, { @@ -22,8 +22,7 @@ async function getPackageUpdates(config) { })).body; const newVersions = Object.keys(releases) .filter( - release => - isPinnedVersion(release) && isGreaterThan(release, currentValue) + release => isVersion(release) && isGreaterThan(release, currentValue) ) .sort(sortVersions); diff --git a/lib/manager/travis/package.js b/lib/manager/travis/package.js index 65029bd6506c63b7ee641582fa00e1cee1c94f53..59c2b52970cc97fba17896250cc1708cc5c4be08 100644 --- a/lib/manager/travis/package.js +++ b/lib/manager/travis/package.js @@ -2,7 +2,7 @@ const { isEqual } = require('lodash'); const { getDependency } = require('../../datasource/github'); const versioning = require('../../versioning'); -const { isPinnedVersion, maxSatisfyingVersion } = versioning('semver'); +const { isVersion, maxSatisfyingVersion } = versioning('semver'); module.exports = { getPackageUpdates, @@ -36,10 +36,7 @@ async function getPackageUpdates(config) { .sort() // sort combined array .reverse() // we want to order latest to oldest .map(version => `${version}`); // convert to strings - if ( - config.rangeStrategy === 'pin' || - isPinnedVersion(config.currentValue[0]) - ) { + if (config.rangeStrategy === 'pin' || isVersion(config.currentValue[0])) { const releases = Object.keys( (await getDependency('nodejs/node', { clean: 'true' })).versions ); diff --git a/lib/versioning/pep440/index.js b/lib/versioning/pep440/index.js index cc103596d2dd4dbd90de47b17353b6926f4bbef2..a273053d3b74f07f91d7f6c816bee96cb56560c6 100644 --- a/lib/versioning/pep440/index.js +++ b/lib/versioning/pep440/index.js @@ -1,11 +1,11 @@ const pep440 = require('@renovate/pep440'); const { filter } = require('@renovate/pep440/lib/specifier'); -const { rangify } = require('./range'); +const { getNewValue } = require('./range'); const { compare: sortVersions, satisfies: matches, - valid: isPinnedVersion, + valid: isVersion, validRange, explain, gt: isGreaterThan, @@ -22,7 +22,7 @@ const isStable = input => { return !version.is_prerelease; }; -const isRange = input => isValid(input) && !isPinnedVersion(input); +const isRange = input => isValid(input) && !isVersion(input); // If this is left as an alias, inputs like "17.04.0" throw errors const isValid = input => validRange(input); @@ -42,13 +42,13 @@ module.exports = { getMajor, getMinor, isGreaterThan, - isPinnedVersion, + isVersion, isRange, isStable, isValid, matches, maxSatisfyingVersion, minSatisfyingVersion, - rangify, + getNewValue, sortVersions, }; diff --git a/lib/versioning/pep440/range.js b/lib/versioning/pep440/range.js index 2f5669b01f338cda7a567205695e881ee319714d..092de87e74ebc891e3864ea8969bca73b50d425d 100644 --- a/lib/versioning/pep440/range.js +++ b/lib/versioning/pep440/range.js @@ -1,8 +1,8 @@ module.exports = { - rangify, + getNewValue, }; -function rangify(config, currentValue, fromVersion, toVersion) { +function getNewValue(config, currentValue, fromVersion, toVersion) { const { rangeStrategy } = config; // istanbul ignore if if (rangeStrategy !== 'pin') { diff --git a/lib/versioning/semver/index.js b/lib/versioning/semver/index.js index 87aa71187016c70432ec33d3c2eb8e61aff44c73..2e9064b43cc67f42dcf850b2e291a622e85fe543 100644 --- a/lib/versioning/semver/index.js +++ b/lib/versioning/semver/index.js @@ -1,6 +1,6 @@ const semver = require('semver'); const stable = require('semver-stable'); -const { rangify } = require('./range'); +const { getNewValue } = require('./range'); const { is: isStable } = stable; @@ -10,7 +10,7 @@ const { minSatisfying: minSatisfyingVersion, minor: getMinor, satisfies: matches, - valid: isPinnedVersion, + valid: isVersion, validRange, ltr: isLessThanRange, gt: isGreaterThan, @@ -20,11 +20,11 @@ const { const padRange = range => range + '.0'.repeat(3 - range.split('.').length); const getMajor = input => { - const version = isPinnedVersion(input) ? input : padRange(input); + const version = isVersion(input) ? input : padRange(input); return semver.major(version); }; -const isRange = input => isValid(input) && !isPinnedVersion(input); +const isRange = input => isValid(input) && !isVersion(input); // If this is left as an alias, inputs like "17.04.0" throw errors const isValid = input => validRange(input); @@ -35,13 +35,13 @@ module.exports = { getMinor, isGreaterThan, isLessThanRange, - isPinnedVersion, isRange, isStable, isValid, + isVersion, matches, maxSatisfyingVersion, minSatisfyingVersion, - rangify, + getNewValue, sortVersions, }; diff --git a/lib/versioning/semver/range.js b/lib/versioning/semver/range.js index e395a61225cc906150409c746c8609ac3fa0d311..5a047141505193254451875574e1dbb5432bd476 100644 --- a/lib/versioning/semver/range.js +++ b/lib/versioning/semver/range.js @@ -2,10 +2,10 @@ const { inc: increment, major, minor, valid } = require('semver'); const { parseRange } = require('semver-utils'); module.exports = { - rangify, + getNewValue, }; -function rangify(config, currentValue, fromVersion, toVersion) { +function getNewValue(config, currentValue, fromVersion, toVersion) { const { rangeStrategy } = config; if (rangeStrategy === 'pin' || valid(currentValue)) { return toVersion; @@ -13,7 +13,7 @@ function rangify(config, currentValue, fromVersion, toVersion) { const parsedRange = parseRange(currentValue); const element = parsedRange[parsedRange.length - 1]; if (rangeStrategy === 'widen') { - const newValue = rangify( + const newValue = getNewValue( { ...config, rangeStrategy: 'replace' }, currentValue, fromVersion, diff --git a/lib/workers/pr/changelog/manager-pip.js b/lib/workers/pr/changelog/manager-pip.js index 2ef4059c5e9352ac9d66867f4b532bf5f9a3d2a3..66e390fcfb25ef0432c94bfe3752408ca78abbf9 100644 --- a/lib/workers/pr/changelog/manager-pip.js +++ b/lib/workers/pr/changelog/manager-pip.js @@ -7,7 +7,7 @@ module.exports = { async function getPackage({ versionScheme, depName }) { try { - const { sortVersions, isPinnedVersion } = versioning(versionScheme); + const { sortVersions, isVersion } = versioning(versionScheme); logger.debug({ depName }, 'fetching pip package versions'); const rep = await got(`https://pypi.org/pypi/${depName}/json`, { json: true, @@ -18,7 +18,7 @@ async function getPackage({ versionScheme, depName }) { logger.debug({ depName }, 'pip package not found'); return null; } - const releases = Object.keys(dep.releases).filter(isPinnedVersion); + const releases = Object.keys(dep.releases).filter(isVersion); releases.sort(sortVersions); const versions = releases.map(release => ({ version: release, diff --git a/lib/workers/pr/changelog/source-github.js b/lib/workers/pr/changelog/source-github.js index 38c627b692b2fcc523d2b7a0f09d53b813ce6aa3..f04a0c8b6a5a7a3c4bd58866d06d6e731876c7b1 100644 --- a/lib/workers/pr/changelog/source-github.js +++ b/lib/workers/pr/changelog/source-github.js @@ -6,7 +6,7 @@ module.exports = { }; async function getTags(versionScheme, repository) { - const { isPinnedVersion } = versioning(versionScheme); + const { isVersion } = versioning(versionScheme); try { const versions = {}; @@ -21,7 +21,7 @@ async function getTags(versionScheme, repository) { } tags.forEach(tag => { - const version = isPinnedVersion(tag.name); + const version = isVersion(tag.name); if (version) { versions[version] = { gitHead: tag.name }; } diff --git a/lib/workers/repository/process/lookup/index.js b/lib/workers/repository/process/lookup/index.js index fce079b9841c9b82be0d04f8af77a2352432fa14..1947b5da3bfa10bdc463e355d2855a06301a538c 100644 --- a/lib/workers/repository/process/lookup/index.js +++ b/lib/workers/repository/process/lookup/index.js @@ -19,7 +19,7 @@ async function lookupUpdates(config) { isGreaterThan, isRange, matches, - rangify, + getNewValue, } = versioning(versionScheme); logger.debug({ depName, currentValue }, 'lookupUpdates'); let dependency; @@ -101,7 +101,7 @@ async function lookupUpdates(config) { const buckets = {}; for (const toVersion of filteredVersions) { const update = { fromVersion, toVersion }; - update.newValue = rangify(config, currentValue, fromVersion, toVersion); + update.newValue = getNewValue(config, currentValue, fromVersion, toVersion); if (!update.newValue || update.newValue === currentValue) { continue; // eslint-disable-line no-continue } diff --git a/lib/workers/repository/process/lookup/rollback.js b/lib/workers/repository/process/lookup/rollback.js index 28ded9a12decf6c7c96a763b1c80e6e3e6240ced..3e6fed8a4dcf9ee80d539c974f823b5ec49cc9b8 100644 --- a/lib/workers/repository/process/lookup/rollback.js +++ b/lib/workers/repository/process/lookup/rollback.js @@ -6,7 +6,7 @@ module.exports = { function getRollbackUpdate(config, versions) { const { packageFile, versionScheme, depName, currentValue } = config; - const { getMajor, isLessThanRange, rangify, sortVersions } = versioning( + const { getMajor, isLessThanRange, getNewValue, sortVersions } = versioning( versionScheme ); // istanbul ignore if @@ -35,7 +35,7 @@ function getRollbackUpdate(config, versions) { lessThanVersions.sort(sortVersions); const toVersion = lessThanVersions.pop(); let fromVersion; - const newValue = rangify(config, currentValue, fromVersion, toVersion); + const newValue = getNewValue(config, currentValue, fromVersion, toVersion); return { type: 'rollback', branchName: diff --git a/test/versioning/semver.spec.js b/test/versioning/semver.spec.js index f45cf7f739909a3e03fec7bea056399f44e9cd81..3f5d5d7218f9d56b6a42c065a490676c76a2cdd7 100644 --- a/test/versioning/semver.spec.js +++ b/test/versioning/semver.spec.js @@ -37,15 +37,20 @@ describe('semver.isRange(input)', () => { expect(!!semver.isRange('^1.2.3')).toBe(true); }); }); -describe('semver.rangify()', () => { +describe('semver.getNewValue()', () => { it('bumps equals', () => { expect( - semver.rangify({ rangeStrategy: 'bump' }, '=1.0.0', '1.0.0', '1.1.0') + semver.getNewValue({ rangeStrategy: 'bump' }, '=1.0.0', '1.0.0', '1.1.0') ).toEqual('=1.1.0'); }); it('replaces equals', () => { expect( - semver.rangify({ rangeStrategy: 'replace' }, '=1.0.0', '1.0.0', '1.1.0') + semver.getNewValue( + { rangeStrategy: 'replace' }, + '=1.0.0', + '1.0.0', + '1.1.0' + ) ).toEqual('=1.1.0'); }); });