Files
renovate/lib/manager/node/package.js
T
Rhys Arkins b8dadb718d feat: travis.yml node_js versions support (#1243)
This PR adds support for renovating the `node_js` versions in `.travis.yml` configuration files. Important notes:
- Functionality is disabled by default and hence opt-in via configuration
- Added a new manager type `node` because it is anticipated to support more than just Travis in future, with mostly unified logic
- Added the config option "policy" with supported values: lts, active, current, lts_latest and lts_active
- Policy is actually an array, to allow additive combining, e.g. `["lts_latest", "current"]`
- Actual node versions are *hardcoded*. There is no perfect metadata source for this and they change infrequently enough that it is definitely not a problem for now (next change will be in April 2018)
- If node versions need updating, they are listed from newest to oldest
- Replacing function attempts to detect the indention (spacing) in file and use that

To enable, configure `node.enabled=true` and optionally `node.policy=["<policy>"]` if you want something other than `lts`.

Closes #1208
2017-12-05 07:50:16 +01:00

37 lines
929 B
JavaScript

const { isEqual } = require('lodash');
module.exports = {
getPackageUpdates,
};
// Start version numbers as integers for correct sorting
const policies = {
lts: [4, 6, 8],
active: [6, 8, 9],
current: [9],
lts_active: [6, 8],
lts_latest: [8],
};
function getPackageUpdates(config) {
logger.debug('node.getPackageUpdates()');
if (!Array.isArray(config.supportPolicy) || !config.supportPolicy.length) {
return [];
}
const newVersions = config.supportPolicy
.map(supportPolicy => policies[supportPolicy])
.reduce((result, supportPolicy) => result.concat(supportPolicy), [])
.sort() // sort combined array
.reverse() // we want to order latest to oldest
.map(version => `${version}`); // convert to strings
logger.debug({ newVersions });
if (isEqual([...config.currentVersions].sort(), [...newVersions].sort())) {
return [];
}
return [
{
newVersions,
},
];
}