Skip to content

Commit 9778689

Browse files
committed
show separate table for incompatible updates
1 parent b8dad8c commit 9778689

File tree

1 file changed

+30
-19
lines changed

1 file changed

+30
-19
lines changed

src/commands/check.js

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,9 @@ const pkg = require('../../package.json');
2323

2424
function createUpdatedModulesTable(modules) {
2525
return createSimpleTable(
26-
_.map(modules, ({name, from, to, toVersion, latestVersion}) => [
26+
_.map(modules, ({name, from, to}) => [
2727
strong(name),
28-
from, '→', colorizeDiff(from, to),
29-
toVersion !== latestVersion ? '(ignored incompatible latest version ' + latestVersion + ')' : ''
28+
from, '→', colorizeDiff(from, to)
3029
])
3130
);
3231
}
@@ -77,25 +76,29 @@ export const handler = catchAsyncError(async opts => {
7776
.map(({ncuValue}) => ncuValue)
7877
.join(',');
7978
const currentVersions = ncu.getCurrentDependencies(packageJson, {dep: ncuDepGroups});
80-
const latestVersions = await ncu.queryVersions(currentVersions, {versionTarget: 'latest'});
8179
const peerDependencies = ncu.getPeerDependencies(currentVersions, {});
82-
const peerCompatibleVersions = await ncu.queryVersions(
83-
currentVersions,
84-
{versionTarget: 'latest', peerDependencies, loglevel: 'silent'}
85-
);
86-
const upgradedPeerCompatibleVersions = ncu.upgradeDependencies(currentVersions, peerCompatibleVersions);
87-
let upgradedVersions = ncu.upgradeDependencies(currentVersions, latestVersions);
80+
const compatibleVersions = await ncu.queryVersions(currentVersions, {versionTarget: 'latest', peerDependencies});
81+
const latestVersions = await ncu.queryVersions(currentVersions, {versionTarget: 'latest', loglevel: 'silent'});
8882

8983
// Filtering modules that have to be updated
90-
upgradedVersions = _.pickBy(
91-
upgradedVersions,
84+
const upgradedLatestVersions = _.pickBy(
85+
ncu.upgradeDependencies(currentVersions, latestVersions),
86+
(newVersion, moduleName) => filterModuleName(moduleName)
87+
);
88+
const upgradedCompatibleVersions = _.pickBy(
89+
ncu.upgradeDependencies(currentVersions, compatibleVersions),
9290
(newVersion, moduleName) => filterModuleName(moduleName)
9391
);
9492

95-
if (_.isEmpty(upgradedVersions)) {
93+
if (_.isEmpty(upgradedLatestVersions)) {
9694
return console.log(success('All dependencies are up-to-date!'));
9795
}
9896

97+
const incompatibleVersions = _.pickBy(
98+
upgradedLatestVersions,
99+
(newVersion, moduleName) => upgradedCompatibleVersions[moduleName] !== newVersion
100+
);
101+
99102
// Getting the list of ignored modules
100103
const config = new Config();
101104
config.ignore = config.ignore || {};
@@ -105,15 +108,14 @@ export const handler = catchAsyncError(async opts => {
105108
map.convert({'cap': false})((newVersion, moduleName) => ({
106109
name: moduleName,
107110
from: currentVersions[moduleName],
108-
to: upgradedPeerCompatibleVersions[moduleName] || currentVersions[moduleName],
109-
toVersion: peerCompatibleVersions[moduleName],
110-
latestVersion: latestVersions[moduleName]
111+
to: newVersion,
112+
toVersion: compatibleVersions[moduleName]
111113
})),
112114
partition(module => (
113115
_.has(config.ignore, module.name) &&
114116
semver.satisfies(module.toVersion, config.ignore[module.name].versions)
115117
))
116-
)(upgradedVersions);
118+
)(upgradedCompatibleVersions);
117119

118120
// Moving `@types/*` modules right below their original modules
119121
sortModules(modulesToUpdate);
@@ -130,6 +132,15 @@ export const handler = catchAsyncError(async opts => {
130132
);
131133
}
132134

135+
if (!_.isEmpty(incompatibleVersions)) {
136+
const rows = _.map(Object.entries(incompatibleVersions), ([name, to]) => [
137+
strong(name),
138+
currentVersions[name], '→', colorizeDiff(currentVersions[name], to)
139+
]);
140+
141+
console.log(`\n${strong('Ignored incompatible updates (peer dependencies):')}\n\n${createSimpleTable(rows)}`);
142+
}
143+
133144
if (!_.isEmpty(ignoredModules)) {
134145
const rows = _.map(ignoredModules, ({name, from, to}) => [
135146
strong(name),
@@ -151,7 +162,7 @@ export const handler = catchAsyncError(async opts => {
151162
let isUpdateFinished = false;
152163
while (modulesToUpdate.length && !isUpdateFinished) {
153164
const outdatedModule = modulesToUpdate.shift();
154-
const {name, from, to} = outdatedModule;
165+
const {name, from, to, toVersion} = outdatedModule;
155166
let {changelogUrl, homepage} = outdatedModule;
156167

157168
// Adds new line
@@ -218,7 +229,7 @@ export const handler = catchAsyncError(async opts => {
218229
break;
219230

220231
case 'ignore': {
221-
const {versions, reason} = await askIgnoreFields(latestVersions[name]);
232+
const {versions, reason} = await askIgnoreFields(toVersion);
222233
config.ignore[name] = {versions, reason};
223234
break;
224235
}

0 commit comments

Comments
 (0)