diff --git a/lib/config/definitions.js b/lib/config/definitions.js index 5c38c479937f6acbe98f9579b013b1db54411587..f440730e70effb7f062b392f8c4d31ff077dedec 100644 --- a/lib/config/definitions.js +++ b/lib/config/definitions.js @@ -366,6 +366,7 @@ const options = [ 'docker', 'hashicorp', 'loose', + 'node', 'pep440', 'ruby', 'semver', @@ -1148,6 +1149,7 @@ const options = [ default: { enabled: false, fileMatch: ['^.travis.yml$'], + versionScheme: 'node', }, mergeable: true, cli: false, @@ -1159,6 +1161,7 @@ const options = [ type: 'json', default: { fileMatch: ['^.nvmrc$'], + versionScheme: 'node', }, mergeable: true, cli: false, diff --git a/lib/manager/npm/extract/index.js b/lib/manager/npm/extract/index.js index e37029c879048fb0978d5c402baabdfeaff62b0c..273729d5218e4f3b36bce9ae0b722eff29168ae8 100644 --- a/lib/manager/npm/extract/index.js +++ b/lib/manager/npm/extract/index.js @@ -141,7 +141,8 @@ async function extractPackageFile(content, fileName, config) { dep.currentValue = input.trim(); if (depType === 'engines') { if (depName === 'node') { - dep.purl = 'pkg:github/nodejs/node?normalize=true'; + dep.purl = 'pkg:github/nodejs/node'; + dep.versionScheme = 'node'; } else if (depName === 'yarn') { dep.purl = 'pkg:npm/yarn'; dep.commitMessageTopic = 'Yarn'; diff --git a/lib/manager/nvm/extract.js b/lib/manager/nvm/extract.js index 5c50835ccb7744ad50396f07f30042f567305eae..f3951782c8710e5ed588d13f771fc8d94924c4b5 100644 --- a/lib/manager/nvm/extract.js +++ b/lib/manager/nvm/extract.js @@ -8,7 +8,7 @@ function extractPackageFile(content) { const dep = { depName: 'node', currentValue: content.trim(), - purl: 'pkg:github/nodejs/node?normalize=true', + purl: 'pkg:github/nodejs/node', }; if (!semver.isVersion(dep.currentValue)) { dep.skipReason = 'unsupported-version'; diff --git a/lib/manager/travis/package.js b/lib/manager/travis/package.js index 17c1e5dea84637ccd4462adf22f49e178b37abcd..4d304d02f1f16aaf10bc8831681f68cf38fe7800 100644 --- a/lib/manager/travis/package.js +++ b/lib/manager/travis/package.js @@ -36,7 +36,7 @@ async function getPackageUpdates(config) { const newMajor = newValue[newValue.length - 1]; if (config.rangeStrategy === 'pin' || isVersion(config.currentValue[0])) { const versions = (await getPkgReleases( - 'pkg:github/nodejs/node?normalize=true', + 'pkg:github/nodejs/node', config )).releases.map(release => release.version); newValue = newValue.map(value => diff --git a/lib/versioning/node/index.js b/lib/versioning/node/index.js new file mode 100644 index 0000000000000000000000000000000000000000..547c0dc76a5d17205fa0da9f79e8819d6a6f64ee --- /dev/null +++ b/lib/versioning/node/index.js @@ -0,0 +1,20 @@ +const semver = require('../semver'); + +function getNewValue(currentValue, rangeStrategy, fromVersion, toVersion) { + const res = semver.getNewValue( + currentValue, + rangeStrategy, + fromVersion, + toVersion + ); + if (semver.isVersion(res)) { + // normalize out any 'v' prefix + return semver.isVersion(res); + } + return res; +} + +module.exports = { + ...semver, + getNewValue, +}; diff --git a/test/manager/npm/extract/__snapshots__/index.spec.js.snap b/test/manager/npm/extract/__snapshots__/index.spec.js.snap index 2c2b698ba874513f3370bd525e8b1d0c3fce07a4..d9dd4ba44fd7b58d5360a6b867d70e16e0df0ad4 100644 --- a/test/manager/npm/extract/__snapshots__/index.spec.js.snap +++ b/test/manager/npm/extract/__snapshots__/index.spec.js.snap @@ -63,7 +63,8 @@ Object { "enabled": false, }, "prettyDepType": "engine", - "purl": "pkg:github/nodejs/node?normalize=true", + "purl": "pkg:github/nodejs/node", + "versionScheme": "node", }, Object { "commitMessageTopic": "npm", diff --git a/test/manager/nvm/__snapshots__/extract.spec.js.snap b/test/manager/nvm/__snapshots__/extract.spec.js.snap index edd93f6edec027e071f0aa23fdbb1584fe9b5840..332a6ef5a306a809dfe596f5822c78381ce7c4a6 100644 --- a/test/manager/nvm/__snapshots__/extract.spec.js.snap +++ b/test/manager/nvm/__snapshots__/extract.spec.js.snap @@ -5,7 +5,7 @@ Array [ Object { "currentValue": "8.4.0", "depName": "node", - "purl": "pkg:github/nodejs/node?normalize=true", + "purl": "pkg:github/nodejs/node", }, ] `; @@ -15,7 +15,7 @@ Array [ Object { "currentValue": "8.4", "depName": "node", - "purl": "pkg:github/nodejs/node?normalize=true", + "purl": "pkg:github/nodejs/node", "skipReason": "unsupported-version", }, ] diff --git a/test/versioning/node.spec.js b/test/versioning/node.spec.js new file mode 100644 index 0000000000000000000000000000000000000000..e5ca0930a045a19a85417db9b315507f37657a18 --- /dev/null +++ b/test/versioning/node.spec.js @@ -0,0 +1,14 @@ +const nodever = require('../../lib/versioning/node'); + +describe('semver.getNewValue()', () => { + it('returns normalized toVersion', () => { + expect(nodever.getNewValue('1.0.0', 'replace', '1.0.0', 'v1.1.0')).toEqual( + '1.1.0' + ); + }); + it('returns range', () => { + expect(nodever.getNewValue('~8.0.0', 'replace', '8.0.2', 'v8.2.0')).toEqual( + '~8.2.0' + ); + }); +});