Skip to content

Commit

Permalink
feat(core): log a note after an interactive migration run with skippe…
Browse files Browse the repository at this point in the history
…d package updates
  • Loading branch information
leosvelperez committed May 9, 2023
1 parent 54eb7be commit 1180fc7
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 5 deletions.
10 changes: 10 additions & 0 deletions packages/nx/src/command-line/migrate/migrate.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -426,6 +426,7 @@ describe('Migration', () => {
},
'@my-company/lib-4': { version: '2.0.1', addToPackageJson: false },
},
minVersionWithSkippedUpdates: undefined,
});
});

Expand Down Expand Up @@ -503,6 +504,7 @@ describe('Migration', () => {
'@my-company/lib-1': { version: '3.0.0', addToPackageJson: false },
'@my-company/lib-2': { version: '3.0.0', addToPackageJson: false },
},
minVersionWithSkippedUpdates: undefined,
});
});

Expand Down Expand Up @@ -635,6 +637,7 @@ describe('Migration', () => {
child2: { version: '3.0.0', addToPackageJson: false },
child3: { version: '3.0.0', addToPackageJson: false },
},
minVersionWithSkippedUpdates: undefined,
});
expect(enquirer.prompt).toHaveBeenCalledWith(
expect.arrayContaining([
Expand Down Expand Up @@ -693,6 +696,7 @@ describe('Migration', () => {
mypackage: { version: '2.0.0', addToPackageJson: false },
child1: { version: '3.0.0', addToPackageJson: false },
},
minVersionWithSkippedUpdates: '2.0.0',
});
expect(enquirer.prompt).toHaveBeenCalled();
});
Expand Down Expand Up @@ -749,6 +753,7 @@ describe('Migration', () => {
child2: { version: '3.0.0', addToPackageJson: false },
child3: { version: '3.0.0', addToPackageJson: false },
},
minVersionWithSkippedUpdates: undefined,
});
expect(enquirer.prompt).not.toHaveBeenCalled();
});
Expand Down Expand Up @@ -831,6 +836,7 @@ describe('Migration', () => {
child2: { version: '3.0.0', addToPackageJson: false },
child3: { version: '3.0.0', addToPackageJson: false },
},
minVersionWithSkippedUpdates: undefined,
});
});

Expand Down Expand Up @@ -913,6 +919,7 @@ describe('Migration', () => {
pkg1: { version: '2.0.0', addToPackageJson: false },
pkg2: { version: '2.0.0', addToPackageJson: false },
},
minVersionWithSkippedUpdates: undefined,
});
});

Expand Down Expand Up @@ -961,6 +968,7 @@ describe('Migration', () => {
mypackage: { version: '2.0.0', addToPackageJson: false },
child1: { version: '3.0.0', addToPackageJson: false },
},
minVersionWithSkippedUpdates: undefined,
});
expect(enquirer.prompt).toHaveBeenCalledWith(
expect.arrayContaining([
Expand Down Expand Up @@ -1013,6 +1021,7 @@ describe('Migration', () => {
packageUpdates: {
mypackage: { version: '2.0.0', addToPackageJson: false },
},
minVersionWithSkippedUpdates: undefined,
});
expect(enquirer.prompt).not.toHaveBeenCalled();
});
Expand Down Expand Up @@ -1257,6 +1266,7 @@ describe('Migration', () => {
packageUpdates: {
parent: { version: '2.0.0', addToPackageJson: false },
},
minVersionWithSkippedUpdates: '2.0.0',
});
expect(enquirer.prompt).toHaveBeenCalled();
});
Expand Down
27 changes: 22 additions & 5 deletions packages/nx/src/command-line/migrate/migrate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,7 @@ export class Migrator {
private readonly collectedVersions: Record<string, string> = {};
private readonly promptAnswers: Record<string, boolean> = {};
private readonly nxInstallation: NxJsonConfiguration['installation'] | null;
private minVersionWithSkippedUpdates: string | undefined;

constructor(opts: MigratorOptions) {
this.packageJson = opts.packageJson;
Expand All @@ -156,7 +157,11 @@ export class Migrator {
});

const migrations = await this.createMigrateJson();
return { packageUpdates: this.packageUpdates, migrations };
return {
packageUpdates: this.packageUpdates,
migrations,
minVersionWithSkippedUpdates: this.minVersionWithSkippedUpdates,
};
}

private async createMigrateJson() {
Expand Down Expand Up @@ -567,6 +572,15 @@ export class Migrator {
},
]).then(({ shouldApply }: { shouldApply: boolean }) => {
this.promptAnswers[promptKey] = shouldApply;

if (
!shouldApply &&
(!this.minVersionWithSkippedUpdates ||
lt(packageUpdate.version, this.minVersionWithSkippedUpdates))
) {
this.minVersionWithSkippedUpdates = packageUpdate.version;
}

return shouldApply;
});
}
Expand Down Expand Up @@ -1232,10 +1246,8 @@ async function generateMigrationsJsonAndUpdatePackageJson(
excludeAppliedMigrations: opts.excludeAppliedMigrations,
});

const { migrations, packageUpdates } = await migrator.migrate(
opts.targetPackage,
opts.targetVersion
);
const { migrations, packageUpdates, minVersionWithSkippedUpdates } =
await migrator.migrate(opts.targetPackage, opts.targetVersion);

updatePackageJson(root, packageUpdates);
await updateInstallationDetails(root, packageUpdates);
Expand Down Expand Up @@ -1264,6 +1276,11 @@ async function generateMigrationsJsonAndUpdatePackageJson(
...(migrations.length > 0
? [`- Run '${pmc.exec} nx migrate --run-migrations'`]
: []),
...(opts.interactive && minVersionWithSkippedUpdates
? [
`- You opted out of some migrations for now. Write the following command down somewhere to apply these migrations later: 'nx migrate ${opts.targetVersion} --from ${opts.targetPackage}@${minVersionWithSkippedUpdates} --exclude-applied-migrations'.`,
]
: []),
`- To learn more go to https://nx.dev/core-features/automate-updating-dependencies`,
...(showConnectToCloudMessage()
? [
Expand Down

0 comments on commit 1180fc7

Please sign in to comment.