nx 19.6.0-canary.20240730-acd9bb7 → 19.6.0-canary.20240801-2111841
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +12 -12
- package/schemas/project-schema.json +40 -6
- package/src/command-line/connect/connect-to-nx-cloud.d.ts +2 -0
- package/src/command-line/connect/connect-to-nx-cloud.js +33 -6
- package/src/command-line/connect/view-logs.js +5 -3
- package/src/command-line/init/implementation/add-nx-to-monorepo.js +1 -1
- package/src/command-line/init/implementation/add-nx-to-nest.js +1 -1
- package/src/command-line/init/implementation/add-nx-to-npm-repo.js +1 -1
- package/src/command-line/init/implementation/angular/index.js +1 -1
- package/src/command-line/init/implementation/angular/legacy-angular-versions.js +1 -1
- package/src/command-line/init/implementation/utils.d.ts +1 -1
- package/src/command-line/init/implementation/utils.js +7 -5
- package/src/command-line/init/init-v2.js +1 -4
- package/src/command-line/migrate/migrate.js +14 -6
- package/src/command-line/release/plan.js +2 -12
- package/src/command-line/release/utils/generate-version-plan-content.d.ts +1 -0
- package/src/command-line/release/utils/generate-version-plan-content.js +21 -0
- package/src/command-line/release/utils/shared.js +7 -5
- package/src/command-line/release/version.js +4 -2
- package/src/core/graph/main.js +1 -1
- package/src/native/nx.wasm32-wasi.wasm +0 -0
- package/src/nx-cloud/generators/connect-to-nx-cloud/connect-to-nx-cloud.d.ts +3 -2
- package/src/nx-cloud/generators/connect-to-nx-cloud/connect-to-nx-cloud.js +18 -57
- package/src/nx-cloud/utilities/url-shorten.d.ts +1 -1
- package/src/nx-cloud/utilities/url-shorten.js +5 -7
- package/src/project-graph/plugins/internal-api.js +4 -1
- package/src/tasks-runner/task-graph-utils.js +1 -1
- package/src/utils/git-utils.js +3 -1
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "nx",
|
3
|
-
"version": "19.6.0-canary.
|
3
|
+
"version": "19.6.0-canary.20240801-2111841",
|
4
4
|
"private": false,
|
5
5
|
"description": "The core Nx plugin contains the core functionality of Nx like the project graph, nx commands and task orchestration.",
|
6
6
|
"repository": {
|
@@ -71,7 +71,7 @@
|
|
71
71
|
"yargs-parser": "21.1.1",
|
72
72
|
"node-machine-id": "1.1.12",
|
73
73
|
"ora": "5.3.0",
|
74
|
-
"@nrwl/tao": "19.6.0-canary.
|
74
|
+
"@nrwl/tao": "19.6.0-canary.20240801-2111841"
|
75
75
|
},
|
76
76
|
"peerDependencies": {
|
77
77
|
"@swc-node/register": "^1.8.0",
|
@@ -86,16 +86,16 @@
|
|
86
86
|
}
|
87
87
|
},
|
88
88
|
"optionalDependencies": {
|
89
|
-
"@nx/nx-darwin-x64": "19.6.0-canary.
|
90
|
-
"@nx/nx-darwin-arm64": "19.6.0-canary.
|
91
|
-
"@nx/nx-linux-x64-gnu": "19.6.0-canary.
|
92
|
-
"@nx/nx-linux-x64-musl": "19.6.0-canary.
|
93
|
-
"@nx/nx-win32-x64-msvc": "19.6.0-canary.
|
94
|
-
"@nx/nx-linux-arm64-gnu": "19.6.0-canary.
|
95
|
-
"@nx/nx-linux-arm64-musl": "19.6.0-canary.
|
96
|
-
"@nx/nx-linux-arm-gnueabihf": "19.6.0-canary.
|
97
|
-
"@nx/nx-win32-arm64-msvc": "19.6.0-canary.
|
98
|
-
"@nx/nx-freebsd-x64": "19.6.0-canary.
|
89
|
+
"@nx/nx-darwin-x64": "19.6.0-canary.20240801-2111841",
|
90
|
+
"@nx/nx-darwin-arm64": "19.6.0-canary.20240801-2111841",
|
91
|
+
"@nx/nx-linux-x64-gnu": "19.6.0-canary.20240801-2111841",
|
92
|
+
"@nx/nx-linux-x64-musl": "19.6.0-canary.20240801-2111841",
|
93
|
+
"@nx/nx-win32-x64-msvc": "19.6.0-canary.20240801-2111841",
|
94
|
+
"@nx/nx-linux-arm64-gnu": "19.6.0-canary.20240801-2111841",
|
95
|
+
"@nx/nx-linux-arm64-musl": "19.6.0-canary.20240801-2111841",
|
96
|
+
"@nx/nx-linux-arm-gnueabihf": "19.6.0-canary.20240801-2111841",
|
97
|
+
"@nx/nx-win32-arm64-msvc": "19.6.0-canary.20240801-2111841",
|
98
|
+
"@nx/nx-freebsd-x64": "19.6.0-canary.20240801-2111841"
|
99
99
|
},
|
100
100
|
"nx-migrations": {
|
101
101
|
"migrations": "./migrations.json",
|
@@ -115,8 +115,12 @@
|
|
115
115
|
"required": ["target"],
|
116
116
|
"not": {
|
117
117
|
"anyOf": [
|
118
|
-
{
|
119
|
-
|
118
|
+
{
|
119
|
+
"required": ["projects"]
|
120
|
+
},
|
121
|
+
{
|
122
|
+
"required": ["dependencies"]
|
123
|
+
}
|
120
124
|
]
|
121
125
|
}
|
122
126
|
}
|
@@ -138,6 +142,17 @@
|
|
138
142
|
"type": "boolean",
|
139
143
|
"default": true,
|
140
144
|
"description": "Whether this target can be run in parallel with other tasks"
|
145
|
+
},
|
146
|
+
"metadata": {
|
147
|
+
"type": "object",
|
148
|
+
"description": "Metadata about the target",
|
149
|
+
"properties": {
|
150
|
+
"description": {
|
151
|
+
"type": "string",
|
152
|
+
"description": "A description of the target"
|
153
|
+
}
|
154
|
+
},
|
155
|
+
"additionalProperties": true
|
141
156
|
}
|
142
157
|
}
|
143
158
|
}
|
@@ -154,6 +169,17 @@
|
|
154
169
|
"type": "string"
|
155
170
|
}
|
156
171
|
},
|
172
|
+
"metadata": {
|
173
|
+
"type": "object",
|
174
|
+
"description": "Metadata about the project.",
|
175
|
+
"properties": {
|
176
|
+
"description": {
|
177
|
+
"type": "string",
|
178
|
+
"description": "A description of the project."
|
179
|
+
}
|
180
|
+
},
|
181
|
+
"additionalProperties": true
|
182
|
+
},
|
157
183
|
"release": {
|
158
184
|
"type": "object",
|
159
185
|
"description": "Configuration for the nx release commands.",
|
@@ -205,7 +231,9 @@
|
|
205
231
|
{
|
206
232
|
"type": "array",
|
207
233
|
"description": "The projects that the targets belong to.",
|
208
|
-
"items": {
|
234
|
+
"items": {
|
235
|
+
"type": "string"
|
236
|
+
}
|
209
237
|
}
|
210
238
|
]
|
211
239
|
},
|
@@ -229,8 +257,12 @@
|
|
229
257
|
"required": ["input"],
|
230
258
|
"not": {
|
231
259
|
"anyOf": [
|
232
|
-
{
|
233
|
-
|
260
|
+
{
|
261
|
+
"required": ["projects"]
|
262
|
+
},
|
263
|
+
{
|
264
|
+
"required": ["dependencies"]
|
265
|
+
}
|
234
266
|
]
|
235
267
|
}
|
236
268
|
}
|
@@ -262,7 +294,9 @@
|
|
262
294
|
"properties": {
|
263
295
|
"externalDependencies": {
|
264
296
|
"type": "array",
|
265
|
-
"items": {
|
297
|
+
"items": {
|
298
|
+
"type": "string"
|
299
|
+
},
|
266
300
|
"description": "The list of external dependencies that our target depends on for `nx:run-commands` and community plugins."
|
267
301
|
}
|
268
302
|
},
|
@@ -1,8 +1,10 @@
|
|
1
|
+
import { ConnectToNxCloudOptions } from '../../nx-cloud/generators/connect-to-nx-cloud/connect-to-nx-cloud';
|
1
2
|
import { NxJsonConfiguration } from '../../config/nx-json';
|
2
3
|
import { NxArgs } from '../../utils/command-line-utils';
|
3
4
|
import { MessageKey } from '../../utils/ab-testing';
|
4
5
|
export declare function onlyDefaultRunnerIsUsed(nxJson: NxJsonConfiguration): boolean;
|
5
6
|
export declare function connectToNxCloudIfExplicitlyAsked(opts: NxArgs): Promise<void>;
|
7
|
+
export declare function connectWorkspaceToCloud(options: ConnectToNxCloudOptions): Promise<string>;
|
6
8
|
export declare function connectToNxCloudCommand(command?: string): Promise<boolean>;
|
7
9
|
export declare function connectExistingRepoToNxCloudPrompt(command?: string, key?: MessageKey): Promise<boolean>;
|
8
10
|
export declare function connectToNxCloudWithPrompt(command: string): Promise<void>;
|
@@ -2,6 +2,7 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.onlyDefaultRunnerIsUsed = onlyDefaultRunnerIsUsed;
|
4
4
|
exports.connectToNxCloudIfExplicitlyAsked = connectToNxCloudIfExplicitlyAsked;
|
5
|
+
exports.connectWorkspaceToCloud = connectWorkspaceToCloud;
|
5
6
|
exports.connectToNxCloudCommand = connectToNxCloudCommand;
|
6
7
|
exports.connectExistingRepoToNxCloudPrompt = connectExistingRepoToNxCloudPrompt;
|
7
8
|
exports.connectToNxCloudWithPrompt = connectToNxCloudWithPrompt;
|
@@ -16,6 +17,8 @@ const ab_testing_1 = require("../../utils/ab-testing");
|
|
16
17
|
const versions_1 = require("../../utils/versions");
|
17
18
|
const workspace_root_1 = require("../../utils/workspace-root");
|
18
19
|
const chalk = require("chalk");
|
20
|
+
const ora = require("ora");
|
21
|
+
const open = require("open");
|
19
22
|
function onlyDefaultRunnerIsUsed(nxJson) {
|
20
23
|
const defaultRunner = nxJson.tasksRunnerOptions?.default?.runner;
|
21
24
|
if (!defaultRunner) {
|
@@ -43,6 +46,13 @@ async function connectToNxCloudIfExplicitlyAsked(opts) {
|
|
43
46
|
process.exit(0);
|
44
47
|
}
|
45
48
|
}
|
49
|
+
async function connectWorkspaceToCloud(options) {
|
50
|
+
const tree = new tree_1.FsTree(workspace_root_1.workspaceRoot, false, 'connect-to-nx-cloud');
|
51
|
+
const accessToken = await (0, connect_to_nx_cloud_1.connectToNxCloud)(tree, options);
|
52
|
+
tree.lock();
|
53
|
+
(0, tree_1.flushChanges)(workspace_root_1.workspaceRoot, tree.listChanges());
|
54
|
+
return accessToken;
|
55
|
+
}
|
46
56
|
async function connectToNxCloudCommand(command) {
|
47
57
|
const nxJson = (0, configuration_1.readNxJson)();
|
48
58
|
if ((0, nx_cloud_utils_1.isNxCloudUsed)(nxJson)) {
|
@@ -50,7 +60,7 @@ async function connectToNxCloudCommand(command) {
|
|
50
60
|
if (!token) {
|
51
61
|
throw new Error(`Unable to authenticate. Either define accessToken in nx.json or set the NX_CLOUD_ACCESS_TOKEN env variable.`);
|
52
62
|
}
|
53
|
-
const connectCloudUrl = await (0, url_shorten_1.
|
63
|
+
const connectCloudUrl = await (0, url_shorten_1.createNxCloudOnboardingURL)('nx-connect', token);
|
54
64
|
output_1.output.log({
|
55
65
|
title: '✔ This workspace already has Nx Cloud set up',
|
56
66
|
bodyLines: [
|
@@ -62,15 +72,32 @@ async function connectToNxCloudCommand(command) {
|
|
62
72
|
});
|
63
73
|
return false;
|
64
74
|
}
|
65
|
-
const
|
66
|
-
const callback = await (0, connect_to_nx_cloud_1.connectToNxCloud)(tree, {
|
75
|
+
const token = await connectWorkspaceToCloud({
|
67
76
|
installationSource: command ?? 'nx-connect',
|
68
77
|
});
|
69
|
-
|
70
|
-
|
71
|
-
|
78
|
+
const connectCloudUrl = await (0, url_shorten_1.createNxCloudOnboardingURL)('nx-connect', token);
|
79
|
+
try {
|
80
|
+
const cloudConnectSpinner = ora(`Opening Nx Cloud ${connectCloudUrl} in your browser to connect your workspace.`).start();
|
81
|
+
await sleep(2000);
|
82
|
+
await open(connectCloudUrl);
|
83
|
+
cloudConnectSpinner.succeed();
|
84
|
+
}
|
85
|
+
catch (e) {
|
86
|
+
output_1.output.note({
|
87
|
+
title: `Your Nx Cloud workspace is ready.`,
|
88
|
+
bodyLines: [
|
89
|
+
`To claim it, connect it to your Nx Cloud account:`,
|
90
|
+
`- Go to the following URL to connect your workspace to Nx Cloud:`,
|
91
|
+
'',
|
92
|
+
`${connectCloudUrl}`,
|
93
|
+
],
|
94
|
+
});
|
95
|
+
}
|
72
96
|
return true;
|
73
97
|
}
|
98
|
+
function sleep(ms) {
|
99
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
100
|
+
}
|
74
101
|
async function connectExistingRepoToNxCloudPrompt(command = 'init', key = 'setupNxCloud') {
|
75
102
|
const res = await nxCloudPrompt(key).then((value) => value === 'yes');
|
76
103
|
await (0, ab_testing_1.recordStat)({
|
@@ -5,9 +5,10 @@ const package_manager_1 = require("../../utils/package-manager");
|
|
5
5
|
const child_process_1 = require("child_process");
|
6
6
|
const nx_cloud_utils_1 = require("../../utils/nx-cloud-utils");
|
7
7
|
const output_1 = require("../../utils/output");
|
8
|
-
const child_process_2 = require("../../utils/child-process");
|
9
8
|
const nx_json_1 = require("../../config/nx-json");
|
10
9
|
const connect_to_nx_cloud_1 = require("./connect-to-nx-cloud");
|
10
|
+
const connect_to_nx_cloud_2 = require("../../nx-cloud/generators/connect-to-nx-cloud/connect-to-nx-cloud");
|
11
|
+
const url_shorten_1 = require("../../nx-cloud/utilities/url-shorten");
|
11
12
|
async function viewLogs() {
|
12
13
|
const cloudUsed = (0, nx_cloud_utils_1.isNxCloudUsed)((0, nx_json_1.readNxJson)());
|
13
14
|
if (cloudUsed) {
|
@@ -27,9 +28,10 @@ async function viewLogs() {
|
|
27
28
|
output_1.output.log({
|
28
29
|
title: 'Connecting to Nx Cloud',
|
29
30
|
});
|
30
|
-
(0,
|
31
|
-
|
31
|
+
const token = await (0, connect_to_nx_cloud_1.connectWorkspaceToCloud)({
|
32
|
+
installationSource: 'view-logs',
|
32
33
|
});
|
34
|
+
await (0, connect_to_nx_cloud_2.printSuccessMessage)(token, 'view-logs', await (0, url_shorten_1.repoUsesGithub)());
|
33
35
|
}
|
34
36
|
catch (e) {
|
35
37
|
output_1.output.log({
|
@@ -74,7 +74,7 @@ async function addNxToMonorepo(options) {
|
|
74
74
|
(0, utils_1.runInstall)(repoRoot);
|
75
75
|
if (useNxCloud) {
|
76
76
|
output_1.output.log({ title: '🛠️ Setting up Nx Cloud' });
|
77
|
-
(0, utils_1.initCloud)(
|
77
|
+
await (0, utils_1.initCloud)('nx-init-monorepo');
|
78
78
|
}
|
79
79
|
}
|
80
80
|
// scanning package.json files
|
@@ -93,7 +93,7 @@ async function addNxToNest(options, packageJson) {
|
|
93
93
|
(0, utils_1.runInstall)(repoRoot);
|
94
94
|
if (useNxCloud) {
|
95
95
|
output_1.output.log({ title: '🛠️ Setting up Nx Cloud' });
|
96
|
-
(0, utils_1.initCloud)(
|
96
|
+
await (0, utils_1.initCloud)('nx-init-nest');
|
97
97
|
}
|
98
98
|
}
|
99
99
|
function addNestPluginToPackageJson(repoRoot) {
|
@@ -67,6 +67,6 @@ async function addNxToNpmRepo(options) {
|
|
67
67
|
(0, utils_1.runInstall)(repoRoot, pmc);
|
68
68
|
if (useNxCloud) {
|
69
69
|
output_1.output.log({ title: '🛠️ Setting up Nx Cloud' });
|
70
|
-
(0, utils_1.initCloud)(
|
70
|
+
await (0, utils_1.initCloud)('nx-init-npm-repo');
|
71
71
|
}
|
72
72
|
}
|
@@ -44,7 +44,7 @@ async function addNxToAngularCliRepo(options) {
|
|
44
44
|
await setupWorkspace(cacheableOperations, options.integrated);
|
45
45
|
if (useNxCloud) {
|
46
46
|
output_1.output.log({ title: '🛠️ Setting up Nx Cloud' });
|
47
|
-
(0, utils_1.initCloud)(
|
47
|
+
await (0, utils_1.initCloud)('nx-init-angular');
|
48
48
|
}
|
49
49
|
}
|
50
50
|
async function collectCacheableOperations(options) {
|
@@ -85,7 +85,7 @@ async function getLegacyMigrationFunctionIfApplicable(repoRoot, options) {
|
|
85
85
|
(0, child_process_1.execSync)(`${pmc.exec} ${legacyMigrationCommand}`, { stdio: [0, 1, 2] });
|
86
86
|
if (useNxCloud) {
|
87
87
|
output_1.output.log({ title: '🛠️ Setting up Nx Cloud' });
|
88
|
-
(0, utils_1.initCloud)(
|
88
|
+
await (0, utils_1.initCloud)('nx-init-angular');
|
89
89
|
}
|
90
90
|
};
|
91
91
|
}
|
@@ -6,7 +6,7 @@ export declare function createNxJsonFile(repoRoot: string, topologicalTargets: s
|
|
6
6
|
export declare function addDepsToPackageJson(repoRoot: string, additionalPackages?: string[]): void;
|
7
7
|
export declare function updateGitIgnore(root: string): void;
|
8
8
|
export declare function runInstall(repoRoot: string, pmc?: PackageManagerCommands): void;
|
9
|
-
export declare function initCloud(
|
9
|
+
export declare function initCloud(installationSource: 'nx-init' | 'nx-init-angular' | 'nx-init-cra' | 'nx-init-monorepo' | 'nx-init-nest' | 'nx-init-npm-repo'): Promise<void>;
|
10
10
|
export declare function addVsCodeRecommendedExtensions(repoRoot: string, extensions: string[]): void;
|
11
11
|
export declare function markRootPackageJsonAsNxProjectLegacy(repoRoot: string, cacheableScripts: string[], pmc: PackageManagerCommands): void;
|
12
12
|
export declare function markPackageJsonAsNxProject(packageJsonPath: string): void;
|
@@ -12,13 +12,15 @@ exports.printFinalMessage = printFinalMessage;
|
|
12
12
|
exports.isMonorepo = isMonorepo;
|
13
13
|
const child_process_1 = require("child_process");
|
14
14
|
const path_1 = require("path");
|
15
|
-
const child_process_2 = require("../../../utils/child-process");
|
16
15
|
const fileutils_1 = require("../../../utils/fileutils");
|
17
16
|
const output_1 = require("../../../utils/output");
|
18
17
|
const package_manager_1 = require("../../../utils/package-manager");
|
19
18
|
const path_2 = require("../../../utils/path");
|
20
19
|
const versions_1 = require("../../../utils/versions");
|
21
20
|
const fs_1 = require("fs");
|
21
|
+
const connect_to_nx_cloud_1 = require("../../../nx-cloud/generators/connect-to-nx-cloud/connect-to-nx-cloud");
|
22
|
+
const url_shorten_1 = require("../../../nx-cloud/utilities/url-shorten");
|
23
|
+
const connect_to_nx_cloud_2 = require("../../connect/connect-to-nx-cloud");
|
22
24
|
function createNxJsonFile(repoRoot, topologicalTargets, cacheableOperations, scriptOutputs) {
|
23
25
|
const nxJsonPath = (0, path_2.joinPathFragments)(repoRoot, 'nx.json');
|
24
26
|
let nxJson = {};
|
@@ -128,11 +130,11 @@ function updateGitIgnore(root) {
|
|
128
130
|
function runInstall(repoRoot, pmc = (0, package_manager_1.getPackageManagerCommand)()) {
|
129
131
|
(0, child_process_1.execSync)(pmc.install, { stdio: [0, 1, 2], cwd: repoRoot });
|
130
132
|
}
|
131
|
-
function initCloud(
|
132
|
-
(0,
|
133
|
-
|
134
|
-
cwd: repoRoot,
|
133
|
+
async function initCloud(installationSource) {
|
134
|
+
const token = await (0, connect_to_nx_cloud_2.connectWorkspaceToCloud)({
|
135
|
+
installationSource,
|
135
136
|
});
|
137
|
+
await (0, connect_to_nx_cloud_1.printSuccessMessage)(token, installationSource, await (0, url_shorten_1.repoUsesGithub)());
|
136
138
|
}
|
137
139
|
function addVsCodeRecommendedExtensions(repoRoot, extensions) {
|
138
140
|
const vsCodeExtensionsPath = (0, path_1.join)(repoRoot, '.vscode/extensions.json');
|
@@ -90,10 +90,7 @@ async function initHandler(options) {
|
|
90
90
|
}
|
91
91
|
if (useNxCloud) {
|
92
92
|
output_1.output.log({ title: '🛠️ Setting up Nx Cloud' });
|
93
|
-
(0,
|
94
|
-
stdio: [0, 1, 2],
|
95
|
-
cwd: repoRoot,
|
96
|
-
});
|
93
|
+
await (0, utils_1.initCloud)('nx-init');
|
97
94
|
}
|
98
95
|
(0, utils_1.printFinalMessage)({
|
99
96
|
learnMoreLink,
|
@@ -910,31 +910,39 @@ async function executeMigrations(root, migrations, isVerbose, shouldCreateCommit
|
|
910
910
|
? -1
|
911
911
|
: 1;
|
912
912
|
});
|
913
|
+
logger_1.logger.info(`Running the following migrations:`);
|
914
|
+
sortedMigrations.forEach((m) => logger_1.logger.info(`- ${m.package}: ${m.name} (${m.description})`));
|
915
|
+
logger_1.logger.info(`---------------------------------------------------------\n`);
|
913
916
|
for (const m of sortedMigrations) {
|
917
|
+
logger_1.logger.info(`Running migration ${m.package}: ${m.name}`);
|
914
918
|
try {
|
915
919
|
const { collection, collectionPath } = readMigrationCollection(m.package, root);
|
916
920
|
if (!isAngularMigration(collection, collectionPath, m.name)) {
|
917
921
|
const changes = await runNxMigration(root, collectionPath, collection, m.name);
|
922
|
+
logger_1.logger.info(`Ran ${m.name} from ${m.package}`);
|
923
|
+
logger_1.logger.info(` ${m.description}\n`);
|
918
924
|
if (changes.length < 1) {
|
925
|
+
logger_1.logger.info(`No changes were made\n`);
|
919
926
|
migrationsWithNoChanges.push(m);
|
920
|
-
// If no changes are made, continue on without printing anything
|
921
927
|
continue;
|
922
928
|
}
|
923
|
-
logger_1.logger.info(
|
924
|
-
logger_1.logger.info(` ${m.description}\n`);
|
929
|
+
logger_1.logger.info('Changes:');
|
925
930
|
(0, tree_1.printChanges)(changes, ' ');
|
931
|
+
logger_1.logger.info('');
|
926
932
|
}
|
927
933
|
else {
|
928
934
|
const ngCliAdapter = await getNgCompatLayer();
|
929
935
|
const { madeChanges, loggingQueue } = await ngCliAdapter.runMigration(root, m.package, m.name, (0, project_graph_1.readProjectsConfigurationFromProjectGraph)(await (0, project_graph_1.createProjectGraphAsync)()).projects, isVerbose);
|
936
|
+
logger_1.logger.info(`Ran ${m.name} from ${m.package}`);
|
937
|
+
logger_1.logger.info(` ${m.description}\n`);
|
930
938
|
if (!madeChanges) {
|
939
|
+
logger_1.logger.info(`No changes were made\n`);
|
931
940
|
migrationsWithNoChanges.push(m);
|
932
|
-
// If no changes are made, continue on without printing anything
|
933
941
|
continue;
|
934
942
|
}
|
935
|
-
logger_1.logger.info(
|
936
|
-
logger_1.logger.info(` ${m.description}\n`);
|
943
|
+
logger_1.logger.info('Changes:');
|
937
944
|
loggingQueue.forEach((log) => logger_1.logger.info(' ' + log));
|
945
|
+
logger_1.logger.info('');
|
938
946
|
}
|
939
947
|
if (shouldCreateCommits) {
|
940
948
|
installDepsIfChanged();
|
@@ -14,6 +14,7 @@ const params_1 = require("../../utils/params");
|
|
14
14
|
const config_1 = require("./config/config");
|
15
15
|
const filter_release_groups_1 = require("./config/filter-release-groups");
|
16
16
|
const version_plans_1 = require("./config/version-plans");
|
17
|
+
const generate_version_plan_content_1 = require("./utils/generate-version-plan-content");
|
17
18
|
const git_1 = require("./utils/git");
|
18
19
|
const print_changes_1 = require("./utils/print-changes");
|
19
20
|
const releasePlanCLIHandler = (args) => (0, params_1.handleErrors)(args.verbose, () => releasePlan(args));
|
@@ -94,7 +95,7 @@ async function releasePlan(args) {
|
|
94
95
|
return 0;
|
95
96
|
}
|
96
97
|
const versionPlanMessage = args.message || (await promptForMessage());
|
97
|
-
const versionPlanFileContent =
|
98
|
+
const versionPlanFileContent = (0, generate_version_plan_content_1.generateVersionPlanContent)(versionPlanBumps, versionPlanMessage);
|
98
99
|
const versionPlanFileName = `version-plan-${new Date().getTime()}.md`;
|
99
100
|
if (args.dryRun) {
|
100
101
|
output_1.output.logSingleLine(`Would create version plan file "${versionPlanFileName}", but --dry-run was set.`);
|
@@ -171,14 +172,3 @@ async function _promptForMessage() {
|
|
171
172
|
process.exit(0);
|
172
173
|
}
|
173
174
|
}
|
174
|
-
function getVersionPlanFileContent(bumps, message) {
|
175
|
-
return `---
|
176
|
-
${Object.entries(bumps)
|
177
|
-
.filter(([_, version]) => version !== 'none')
|
178
|
-
.map(([projectOrGroup, version]) => `${projectOrGroup}: ${version}`)
|
179
|
-
.join('\n')}
|
180
|
-
---
|
181
|
-
|
182
|
-
${message}
|
183
|
-
`;
|
184
|
-
}
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare function generateVersionPlanContent(bumps: Record<string, string>, message: string): string;
|
@@ -0,0 +1,21 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.generateVersionPlanContent = generateVersionPlanContent;
|
4
|
+
function generateVersionPlanContent(bumps, message) {
|
5
|
+
return `---
|
6
|
+
${Object.entries(bumps)
|
7
|
+
.filter(([_, version]) => version !== 'none')
|
8
|
+
.map(([projectOrGroup, version]) => {
|
9
|
+
let key = projectOrGroup;
|
10
|
+
// frontmatter parsing will blow up if we don't wrap @org/package style project names in quotes
|
11
|
+
if (key.startsWith('@')) {
|
12
|
+
key = `'${key}'`;
|
13
|
+
}
|
14
|
+
return `${key}: ${version}`;
|
15
|
+
})
|
16
|
+
.join('\n')}
|
17
|
+
---
|
18
|
+
|
19
|
+
${message}
|
20
|
+
`;
|
21
|
+
}
|
@@ -128,11 +128,13 @@ function createCommitMessageValues(releaseGroups, releaseGroupToFilteredProjects
|
|
128
128
|
}
|
129
129
|
// One entry for the whole group for fixed groups
|
130
130
|
const projectVersionData = versionData[releaseGroupProjectNames[0]]; // all at the same version, so we can just pick the first one
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
131
|
+
if (projectVersionData.newVersion !== null) {
|
132
|
+
const releaseVersion = new ReleaseVersion({
|
133
|
+
version: projectVersionData.newVersion,
|
134
|
+
releaseTagPattern: releaseGroup.releaseTagPattern,
|
135
|
+
});
|
136
|
+
commitMessageValues.push(`- release-group: ${releaseGroup.name} ${releaseVersion.rawVersion}`);
|
137
|
+
}
|
136
138
|
}
|
137
139
|
return commitMessageValues;
|
138
140
|
}
|
@@ -140,8 +140,9 @@ async function releaseVersion(args) {
|
|
140
140
|
...tree.listChanges().map((f) => f.path),
|
141
141
|
...additionalChangedFiles,
|
142
142
|
];
|
143
|
+
const deletedFiles = Array.from(additionalDeletedFiles);
|
143
144
|
// No further actions are necessary in this scenario (e.g. if conventional commits detected no changes)
|
144
|
-
if (!changedFiles.length) {
|
145
|
+
if (!changedFiles.length && !deletedFiles.length) {
|
145
146
|
return {
|
146
147
|
// An overall workspace version cannot be relevant when filtering to independent projects
|
147
148
|
workspaceVersion: undefined,
|
@@ -151,7 +152,7 @@ async function releaseVersion(args) {
|
|
151
152
|
if (args.gitCommit ?? nxReleaseConfig.version.git.commit) {
|
152
153
|
await (0, shared_1.commitChanges)({
|
153
154
|
changedFiles,
|
154
|
-
deletedFiles
|
155
|
+
deletedFiles,
|
155
156
|
isDryRun: !!args.dryRun,
|
156
157
|
isVerbose: !!args.verbose,
|
157
158
|
gitCommitMessages: (0, shared_1.createCommitMessageValues)(releaseGroups, releaseGroupToFilteredProjects, versionData, commitMessage),
|
@@ -162,6 +163,7 @@ async function releaseVersion(args) {
|
|
162
163
|
output_1.output.logSingleLine(`Staging changed files with git`);
|
163
164
|
await (0, git_1.gitAdd)({
|
164
165
|
changedFiles,
|
166
|
+
deletedFiles,
|
165
167
|
dryRun: args.dryRun,
|
166
168
|
verbose: args.verbose,
|
167
169
|
});
|