create-nx-workspace 22.5.2 → 22.5.4

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.
@@ -1 +1 @@
1
- {"version":3,"file":"create-nx-workspace.d.ts","sourceRoot":"","sources":["../../../../packages/create-nx-workspace/bin/create-nx-workspace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-nx-workspace.d.ts","sourceRoot":"","sources":["../../../../packages/create-nx-workspace/bin/create-nx-workspace.ts"],"names":[],"mappings":"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"}
@@ -165,7 +165,7 @@ exports.commandsObject = yargs
165
165
  const errorCode = error instanceof error_utils_1.CnwError ? error.code : 'UNKNOWN';
166
166
  const errorMessage = error instanceof Error ? error.message : String(error);
167
167
  const errorFile = error instanceof Error ? extractErrorFile(error) : undefined;
168
- useCloud = argv.nxCloud !== 'skip';
168
+ useCloud = argv.nxCloud !== 'skip' && argv.nxCloud !== 'never';
169
169
  await (0, ab_testing_1.recordStat)({
170
170
  nxVersion: nx_version_1.nxVersion,
171
171
  command: 'create-nx-workspace',
@@ -276,7 +276,7 @@ async function main(parsedArgs) {
276
276
  await (0, ab_testing_1.recordStat)({
277
277
  nxVersion: nx_version_1.nxVersion,
278
278
  command: 'create-nx-workspace',
279
- useCloud: parsedArgs.nxCloud !== 'skip',
279
+ useCloud: parsedArgs.nxCloud !== 'skip' && parsedArgs.nxCloud !== 'never',
280
280
  meta: {
281
281
  type: 'complete',
282
282
  flowVariant: (0, ab_testing_1.getFlowVariant)(),
@@ -404,7 +404,7 @@ async function normalizeArgsMiddleware(argv) {
404
404
  await (0, ab_testing_1.recordStat)({
405
405
  nxVersion: nx_version_1.nxVersion,
406
406
  command: 'create-nx-workspace',
407
- useCloud: argv.nxCloud !== 'skip',
407
+ useCloud: argv.nxCloud !== 'skip' && argv.nxCloud !== 'never',
408
408
  meta: {
409
409
  type: 'start',
410
410
  flowVariant: (0, ab_testing_1.getFlowVariant)(),
@@ -424,23 +424,36 @@ async function normalizeArgsMiddleware(argv) {
424
424
  const ghAvailable = (0, git_1.isGhCliAvailable)();
425
425
  let nxCloud;
426
426
  let completionMessageKey;
427
+ let skipCloudConnect = false;
428
+ let neverConnectToCloud = false;
427
429
  if (argv.skipGit === true) {
428
430
  nxCloud = 'skip';
429
431
  completionMessageKey = undefined;
430
432
  }
431
433
  else {
432
- // Always show cloud prompt with "full platform" message (CLOUD-4147)
433
- // Flow variant only affects completion banners, not this prompt
434
- nxCloud = await (0, prompts_1.determineNxCloudV2)(argv);
434
+ const cloudChoice = await (0, prompts_1.determineNxCloudV2)(argv);
435
+ if (cloudChoice === 'yes') {
436
+ nxCloud = 'yes';
437
+ skipCloudConnect = false;
438
+ }
439
+ else if (cloudChoice === 'skip') {
440
+ nxCloud = 'skip';
441
+ }
442
+ else {
443
+ nxCloud = 'never';
444
+ neverConnectToCloud = true;
445
+ }
435
446
  completionMessageKey =
436
- nxCloud === 'skip' ? undefined : (0, ab_testing_1.getCompletionMessageKeyForVariant)();
447
+ cloudChoice === 'never'
448
+ ? undefined
449
+ : (0, ab_testing_1.getCompletionMessageKeyForVariant)();
437
450
  }
438
451
  packageManager = argv.packageManager ?? (0, package_manager_1.detectInvokedPackageManager)();
439
452
  Object.assign(argv, {
440
453
  nxCloud,
441
- useGitHub: nxCloud !== 'skip',
442
- // Deferred connection: skip cloud connect but show banner (CLOUD-4255)
443
- skipCloudConnect: nxCloud !== 'skip',
454
+ useGitHub: nxCloud !== 'skip' && nxCloud !== 'never',
455
+ skipCloudConnect,
456
+ neverConnectToCloud,
444
457
  completionMessageKey,
445
458
  packageManager,
446
459
  defaultBase: 'main',
@@ -450,7 +463,7 @@ async function normalizeArgsMiddleware(argv) {
450
463
  await (0, ab_testing_1.recordStat)({
451
464
  nxVersion: nx_version_1.nxVersion,
452
465
  command: 'create-nx-workspace',
453
- useCloud: nxCloud !== 'skip',
466
+ useCloud: nxCloud !== 'skip' && nxCloud !== 'never',
454
467
  meta: {
455
468
  type: 'precreate',
456
469
  flowVariant: (0, ab_testing_1.getFlowVariant)(),
@@ -482,38 +495,14 @@ async function normalizeArgsMiddleware(argv) {
482
495
  packageManager = await (0, prompts_1.determinePackageManager)(argv);
483
496
  const aiAgents = await (0, prompts_1.determineAiAgents)(argv);
484
497
  const defaultBase = await (0, prompts_1.determineDefaultBase)(argv);
485
- // Check if CLI arg was provided (use rawArgs to check original input)
486
- const cliNxCloudArgProvided = rawArgs.nxCloud !== undefined;
487
- let nxCloud;
488
- let useGitHub;
489
- let completionMessageKey;
490
- let skipCloudConnect = false;
491
- if (argv.skipGit === true) {
492
- nxCloud = 'skip';
493
- useGitHub = undefined;
494
- }
495
- else if (cliNxCloudArgProvided) {
496
- // CLI arg provided: use existing flow (CI provider selection if needed)
497
- nxCloud = await (0, prompts_1.determineNxCloud)(argv);
498
- useGitHub =
499
- nxCloud === 'skip'
500
- ? undefined
501
- : nxCloud === 'github' || (await (0, prompts_1.determineIfGitHubWillBeUsed)(argv));
502
- }
503
- else {
504
- // No CLI arg: use simplified prompt (same as template flow)
505
- nxCloud = await (0, prompts_1.determineNxCloudV2)(argv);
506
- useGitHub = nxCloud !== 'skip';
507
- completionMessageKey =
508
- nxCloud === 'skip' ? undefined : (0, ab_testing_1.getCompletionMessageKeyForVariant)();
509
- // Deferred connection: skip cloud connect but show banner (CLOUD-4255)
510
- skipCloudConnect = nxCloud !== 'skip';
511
- }
498
+ // NXC-4020: Restored v22.1.3 simple flow (CI prompt caching fallback)
499
+ const nxCloud = argv.skipGit === true ? 'skip' : await (0, prompts_1.determineNxCloud)(argv);
500
+ const useGitHub = nxCloud === 'skip'
501
+ ? undefined
502
+ : nxCloud === 'github' || (await (0, prompts_1.determineIfGitHubWillBeUsed)(argv));
512
503
  Object.assign(argv, {
513
504
  nxCloud,
514
505
  useGitHub,
515
- skipCloudConnect,
516
- completionMessageKey,
517
506
  packageManager,
518
507
  defaultBase,
519
508
  aiAgents,
@@ -522,7 +511,7 @@ async function normalizeArgsMiddleware(argv) {
522
511
  await (0, ab_testing_1.recordStat)({
523
512
  nxVersion: nx_version_1.nxVersion,
524
513
  command: 'create-nx-workspace',
525
- useCloud: nxCloud !== 'skip',
514
+ useCloud: nxCloud !== 'skip' && nxCloud !== 'never',
526
515
  meta: {
527
516
  type: 'precreate',
528
517
  flowVariant: (0, ab_testing_1.getFlowVariant)(),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-nx-workspace",
3
- "version": "22.5.2",
3
+ "version": "22.5.4",
4
4
  "private": false,
5
5
  "description": "Smart Monorepos · Fast Builds",
6
6
  "repository": {
@@ -41,10 +41,15 @@ export interface CreateWorkspaceOptions {
41
41
  cliName?: string;
42
42
  aiAgents?: Agent[];
43
43
  /**
44
- * @description Skip cloud connection (variant 1 experiment - NXC-3628)
44
+ * @description Skip cloud connection (deferred - show banner but don't write nxCloudId)
45
45
  * @default false
46
46
  */
47
47
  skipCloudConnect?: boolean;
48
+ /**
49
+ * @description Set neverConnectToCloud in nx.json (full opt-out)
50
+ * @default false
51
+ */
52
+ neverConnectToCloud?: boolean;
48
53
  /**
49
54
  * @description Whether GitHub CLI (gh) is available on the system (for telemetry)
50
55
  */
@@ -1 +1 @@
1
- {"version":3,"file":"create-workspace-options.d.ts","sourceRoot":"","sources":["../../../../packages/create-nx-workspace/src/create-workspace-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,cAAc,CAAC;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;IACnB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,eAAO,MAAM,eAAe,yEAOlB,CAAC;AACX,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AACrD,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAOjD,CAAC"}
1
+ {"version":3,"file":"create-workspace-options.d.ts","sourceRoot":"","sources":["../../../../packages/create-nx-workspace/src/create-workspace-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,cAAc,CAAC;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;IACnB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,eAAO,MAAM,eAAe,yEAOlB,CAAC;AACX,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AACrD,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAOjD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"create-workspace.d.ts","sourceRoot":"","sources":["../../../../packages/create-nx-workspace/src/create-workspace.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAGpE,OAAO,EAGL,aAAa,EACd,MAAM,iBAAiB,CAAC;AA2BzB,wBAAgB,4BAA4B,IAAI;IAC9C,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC,CAEA;AAED,wBAAsB,eAAe,CAAC,CAAC,SAAS,sBAAsB,EACpE,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,OAAO,EAAE,CAAC,EACV,OAAO,CAAC,EAAE,CAAC;;;;;GAuPZ;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI7D"}
1
+ {"version":3,"file":"create-workspace.d.ts","sourceRoot":"","sources":["../../../../packages/create-nx-workspace/src/create-workspace.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAGpE,OAAO,EAGL,aAAa,EACd,MAAM,iBAAiB,CAAC;AA4BzB,wBAAgB,4BAA4B,IAAI;IAC9C,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC,CAEA;AAED,wBAAsB,eAAe,CAAC,CAAC,SAAS,sBAAsB,EACpE,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,OAAO,EAAE,CAAC,EACV,OAAO,CAAC,EAAE,CAAC;;;;;GA+QZ;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI7D"}
@@ -82,26 +82,25 @@ async function createWorkspace(preset, options, rawArgs) {
82
82
  throw e;
83
83
  }
84
84
  // Connect to Nx Cloud for template flow
85
- // For variant 1 (NXC-3628): Skip connection, use GitHub flow for URL generation
86
- if (nxCloud !== 'skip' && !options.skipCloudConnect) {
85
+ if (nxCloud !== 'skip' &&
86
+ nxCloud !== 'never' &&
87
+ !options.skipCloudConnect) {
87
88
  await (0, nx_cloud_1.connectToNxCloudForTemplate)(directory, 'create-nx-workspace', useGitHub);
88
89
  }
89
90
  }
90
91
  else {
91
- // Preset flow - existing behavior
92
+ // NXC-4020: Preset flow restored to match v22.1.3
92
93
  if (!preset) {
93
94
  throw new Error('Preset is required when not using a template. Please provide --preset or --template.');
94
95
  }
95
96
  const tmpDir = await (0, create_sandbox_1.createSandbox)(packageManager);
96
97
  const workspaceGlobs = getWorkspaceGlobsFromPreset(preset);
97
- // nx new requires a preset currently. We should probably make it optional.
98
+ // NXC-4020: Pass actual nxCloud value (v22.1.3 behavior) so nxCloudId is set in nx.json
99
+ // Previous: nxCloud: 'skip' override to defer cloud connection
98
100
  directory = await (0, create_empty_workspace_1.createEmptyWorkspace)(tmpDir, name, packageManager, {
99
101
  ...options,
100
102
  preset,
101
103
  workspaceGlobs,
102
- // We want new workspaces to have a short URL to finish Cloud onboarding, but not have nxCloudId set up since it will be handled as part of the onboarding flow.
103
- // This is skipping nxCloudId for the "custom" flow.
104
- nxCloud: 'skip',
105
104
  });
106
105
  // Mark workspace as ready for SIGINT handler
107
106
  workspaceDirectory = directory;
@@ -114,11 +113,33 @@ async function createWorkspace(preset, options, rawArgs) {
114
113
  }
115
114
  }
116
115
  const isTemplate = !!options.template;
117
- // Generate CI for preset flow (not template)
118
- // When nxCloud === 'yes' (from simplified prompt), use GitHub as the CI provider
119
- if (nxCloud !== 'skip' && !isTemplate) {
120
- const ciProvider = nxCloud === 'yes' ? 'github' : nxCloud;
121
- await (0, setup_ci_1.setupCI)(directory, ciProvider, packageManager);
116
+ // Handle "Never" opt-out: set neverConnectToCloud in nx.json
117
+ if (options.neverConnectToCloud) {
118
+ (0, nx_cloud_1.setNeverConnectToCloud)(directory);
119
+ }
120
+ // NXC-4020: Preset flow cloud handling matches v22.1.3 exactly:
121
+ // 1. Read token (cloud was connected during createEmptyWorkspace)
122
+ // 2. Setup CI for specific providers (not 'yes')
123
+ // 3. Generate onboarding URL
124
+ // 4. Git init with connectUrl
125
+ // 5. Show completion message
126
+ let connectUrl;
127
+ let nxCloudInfo;
128
+ if (!isTemplate && nxCloud !== 'skip' && nxCloud !== 'never') {
129
+ const token = (0, nx_cloud_1.readNxCloudToken)(directory);
130
+ if (nxCloud !== 'yes') {
131
+ await (0, setup_ci_1.setupCI)(directory, nxCloud, packageManager);
132
+ }
133
+ connectUrl = await (0, nx_cloud_1.createNxCloudOnboardingUrl)(nxCloud, token, directory, useGitHub);
134
+ // Store for SIGINT handler
135
+ cloudConnectUrl = connectUrl;
136
+ }
137
+ // Template flow: CI setup and cloud connection handled separately
138
+ if (isTemplate &&
139
+ nxCloud !== 'skip' &&
140
+ nxCloud !== 'never' &&
141
+ nxCloud !== 'yes') {
142
+ await (0, setup_ci_1.setupCI)(directory, nxCloud, packageManager);
122
143
  }
123
144
  let pushedToVcs = git_1.VcsPushStatus.SkippedGit;
124
145
  if (!skipGit) {
@@ -127,13 +148,11 @@ async function createWorkspace(preset, options, rawArgs) {
127
148
  (0, ai_output_1.logProgress)('initializing', 'Initializing git repository...');
128
149
  }
129
150
  try {
130
- await (0, git_1.initializeGitRepo)(directory, { defaultBase, commit });
131
- // Push to GitHub if commit was made, GitHub push is not skipped, and:
132
- // - CI provider is GitHub (preset flow with CLI arg), OR
133
- // - Nx Cloud enabled via simplified prompt (nxCloud === 'yes')
134
- if (commit &&
135
- !skipGitHubPush &&
136
- (nxCloud === 'github' || nxCloud === 'yes')) {
151
+ // NXC-4020: Pass connectUrl to git init (v22.1.3 behavior)
152
+ await (0, git_1.initializeGitRepo)(directory, { defaultBase, commit, connectUrl });
153
+ // NXC-4020: Only push for github CI provider (v22.1.3 behavior)
154
+ // Previous: also pushed for nxCloud === 'yes'
155
+ if (commit && !skipGitHubPush && nxCloud === 'github') {
137
156
  pushedToVcs = await (0, git_1.pushToGitHub)(directory, {
138
157
  skipGitHubPush,
139
158
  name,
@@ -144,60 +163,52 @@ async function createWorkspace(preset, options, rawArgs) {
144
163
  }
145
164
  catch (e) {
146
165
  if (e instanceof Error) {
147
- if (!aiMode) {
166
+ if (!(0, ai_output_1.isAiAgent)()) {
148
167
  output_1.output.error({
149
168
  title: 'Could not initialize git repository',
150
169
  bodyLines: (0, error_utils_1.mapErrorToBodyLines)(e),
151
170
  });
152
171
  }
153
- // In AI mode, error will be handled by the caller
154
172
  }
155
173
  else {
156
174
  console.error(e);
157
175
  }
158
176
  }
159
177
  }
160
- // Create onboarding URL AFTER git operations so getVcsRemoteInfo() can detect the repo
161
- let connectUrl;
162
- let nxCloudInfo;
163
- if (nxCloud !== 'skip') {
164
- const aiModeForCloud = (0, ai_output_1.isAiAgent)();
165
- if (aiModeForCloud) {
166
- (0, ai_output_1.logProgress)('configuring', 'Configuring Nx Cloud...');
167
- }
168
- // For variant 1 (skipCloudConnect=true): Skip readNxCloudToken() entirely
169
- // - We didn't call connectToNxCloudForTemplate(), so no token exists
170
- // - The spinner message "Checking Nx Cloud setup" would be misleading
171
- // - createNxCloudOnboardingUrl() uses GitHub flow which sends accessToken: null
172
- //
173
- // For variant 0: Read the token as before (cloud was connected)
174
- const token = options.skipCloudConnect
175
- ? undefined
176
- : (0, nx_cloud_1.readNxCloudToken)(directory);
177
- connectUrl = await (0, nx_cloud_1.createNxCloudOnboardingUrl)(nxCloud, token, directory, useGitHub);
178
- // Store for SIGINT handler
179
- cloudConnectUrl = connectUrl;
180
- // Update README with connect URL (strips markers, adds connect section)
181
- // Then commit the change - amend if not pushed, new commit if already pushed
182
- if (isTemplate) {
178
+ // NXC-4020: Preset flow completion message matches v22.1.3
179
+ if (!isTemplate && connectUrl) {
180
+ nxCloudInfo = await (0, nx_cloud_1.getNxCloudInfo)(nxCloud, connectUrl, pushedToVcs, rawArgs?.nxCloud);
181
+ }
182
+ // Template flow: cloud URL generation and completion message
183
+ if (isTemplate) {
184
+ if (nxCloud !== 'skip' && nxCloud !== 'never') {
185
+ const aiModeForCloud = (0, ai_output_1.isAiAgent)();
186
+ if (aiModeForCloud) {
187
+ (0, ai_output_1.logProgress)('configuring', 'Configuring Nx Cloud...');
188
+ }
189
+ const token = options.skipCloudConnect
190
+ ? undefined
191
+ : (0, nx_cloud_1.readNxCloudToken)(directory);
192
+ connectUrl = await (0, nx_cloud_1.createNxCloudOnboardingUrl)(nxCloud, token, directory, useGitHub);
193
+ cloudConnectUrl = connectUrl;
183
194
  const readmeUpdated = (0, update_readme_1.addConnectUrlToReadme)(directory, connectUrl);
184
195
  if (readmeUpdated && !skipGit && commit) {
185
196
  const alreadyPushed = pushedToVcs === git_1.VcsPushStatus.PushedToVcs;
186
197
  await (0, update_readme_1.amendOrCommitReadme)(directory, alreadyPushed);
187
198
  }
199
+ nxCloudInfo = await (0, nx_cloud_1.getNxCloudInfo)(nxCloud, connectUrl, pushedToVcs);
188
200
  }
189
- nxCloudInfo = await (0, nx_cloud_1.getNxCloudInfo)(connectUrl, pushedToVcs, options.completionMessageKey, name);
190
- }
191
- else if (isTemplate && nxCloud === 'skip') {
192
- // Strip marker comments from README even when cloud is skipped
193
- // so users don't see raw <!-- BEGIN/END: nx-cloud --> markers
194
- const readmeUpdated = (0, update_readme_1.addConnectUrlToReadme)(directory, undefined);
195
- if (readmeUpdated && !skipGit && commit) {
196
- const alreadyPushed = pushedToVcs === git_1.VcsPushStatus.PushedToVcs;
197
- await (0, update_readme_1.amendOrCommitReadme)(directory, alreadyPushed);
201
+ else {
202
+ // Strip marker comments from README
203
+ const readmeUpdated = (0, update_readme_1.addConnectUrlToReadme)(directory, undefined);
204
+ if (readmeUpdated && !skipGit && commit) {
205
+ const alreadyPushed = pushedToVcs === git_1.VcsPushStatus.PushedToVcs;
206
+ await (0, update_readme_1.amendOrCommitReadme)(directory, alreadyPushed);
207
+ }
208
+ if (nxCloud === 'skip') {
209
+ nxCloudInfo = (0, nx_cloud_1.getSkippedNxCloudInfo)();
210
+ }
198
211
  }
199
- // Show nx connect message when user skips cloud in template flow
200
- nxCloudInfo = (0, nx_cloud_1.getSkippedNxCloudInfo)();
201
212
  }
202
213
  return {
203
214
  nxCloudInfo,
@@ -8,7 +8,7 @@ export declare function determineNxCloud(parsedArgs: yargs.Arguments<{
8
8
  export declare function determineNxCloudV2(parsedArgs: yargs.Arguments<{
9
9
  nxCloud?: string;
10
10
  interactive?: boolean;
11
- }>): Promise<'github' | 'skip'>;
11
+ }>): Promise<'yes' | 'skip' | 'never'>;
12
12
  export declare function determineIfGitHubWillBeUsed(parsedArgs: yargs.Arguments<{
13
13
  nxCloud: NxCloud;
14
14
  useGitHub?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../../../packages/create-nx-workspace/src/internal-utils/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,EAEL,cAAc,EAEf,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,OAAO,EACL,KAAK,EAGN,MAAM,6BAA6B,CAAC;AAGrC,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,GAChD,OAAO,CAAC,OAAO,CAAC,CAQlB;AAED,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GACvE,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,CAc5B;AAED,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GACrE,OAAO,CAAC,OAAO,CAAC,CAelB;AA4BD,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC,GACD,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,CA4C5B;AAED,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC;IAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GACzE,OAAO,CAAC,KAAK,EAAE,CAAC,CAElB;AAqBD,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GACpD,OAAO,CAAC,MAAM,CAAC,CAwBjB;AAED,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC;IAAE,cAAc,EAAE,MAAM,CAAA;CAAE,CAAC,GACtD,OAAO,CAAC,cAAc,CAAC,CAiCzB"}
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../../../packages/create-nx-workspace/src/internal-utils/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,EAEL,cAAc,EAEf,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,OAAO,EACL,KAAK,EAGN,MAAM,6BAA6B,CAAC;AAGrC,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,GAChD,OAAO,CAAC,OAAO,CAAC,CAQlB;AAED,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GACvE,OAAO,CAAC,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC,CAiBnC;AAED,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GACrE,OAAO,CAAC,OAAO,CAAC,CAelB;AA4BD,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC,GACD,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,CAG5B;AAED,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC;IAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GACzE,OAAO,CAAC,KAAK,EAAE,CAAC,CAElB;AAqBD,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GACpD,OAAO,CAAC,MAAM,CAAC,CAwBjB;AAED,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC;IAAE,cAAc,EAAE,MAAM,CAAA;CAAE,CAAC,GACtD,OAAO,CAAC,cAAc,CAAC,CAiCzB"}
@@ -11,7 +11,6 @@ const enquirer = require("enquirer");
11
11
  const chalk = require("chalk");
12
12
  const ab_testing_1 = require("../utils/nx/ab-testing");
13
13
  const default_base_1 = require("../utils/git/default-base");
14
- const git_1 = require("../utils/git/git");
15
14
  const package_manager_1 = require("../utils/package-manager");
16
15
  const string_utils_1 = require("../utils/string-utils");
17
16
  const is_ci_1 = require("../utils/ci/is-ci");
@@ -31,15 +30,22 @@ async function determineNxCloud(parsedArgs) {
31
30
  async function determineNxCloudV2(parsedArgs) {
32
31
  // Provided via flag
33
32
  if (parsedArgs.nxCloud) {
34
- return parsedArgs.nxCloud === 'skip' ? 'skip' : 'github';
33
+ if (parsedArgs.nxCloud === 'skip')
34
+ return 'skip';
35
+ if (parsedArgs.nxCloud === 'never')
36
+ return 'never';
37
+ return 'yes';
35
38
  }
36
39
  // Non-interactive mode
37
40
  if (!parsedArgs.interactive || (0, is_ci_1.isCI)()) {
38
41
  return 'skip';
39
42
  }
40
- // Auto-select GitHub flow for deferred connection (variant 2 locked in - CLOUD-4255)
41
- // Note: skipCloudConnect=true prevents actual connection, but we still get the banner
42
- return 'github';
43
+ const result = await nxCloudPrompt('setupNxCloudV2');
44
+ if (result === 'never')
45
+ return 'never';
46
+ if (result === 'skip')
47
+ return 'skip';
48
+ return 'yes';
43
49
  }
44
50
  async function determineIfGitHubWillBeUsed(parsedArgs) {
45
51
  if (parsedArgs.nxCloud === 'yes' || parsedArgs.nxCloud === 'circleci') {
@@ -83,47 +89,7 @@ async function nxCloudPrompt(key) {
83
89
  async function determineTemplate(parsedArgs) {
84
90
  if (parsedArgs.template)
85
91
  return parsedArgs.template;
86
- if (parsedArgs.preset)
87
- return 'custom';
88
- if (!parsedArgs.interactive || (0, is_ci_1.isCI)())
89
- return 'custom';
90
- // Docs generation needs preset flow to document all presets
91
- if (process.env.NX_GENERATE_DOCS_PROCESS === 'true')
92
- return 'custom';
93
- // Template flow requires git for cloning - fall back to custom preset if git is not available
94
- if (!(0, git_1.isGitAvailable)())
95
- return 'custom';
96
- const { template } = await enquirer.prompt([
97
- {
98
- name: 'template',
99
- message: 'Which starter do you want to use?',
100
- type: 'autocomplete',
101
- choices: [
102
- {
103
- name: 'nrwl/empty-template',
104
- message: 'Minimal (empty monorepo without projects)',
105
- },
106
- {
107
- name: 'nrwl/react-template',
108
- message: 'React (fullstack monorepo with React and Express)',
109
- },
110
- {
111
- name: 'nrwl/angular-template',
112
- message: 'Angular (fullstack monorepo with Angular and Express)',
113
- },
114
- {
115
- name: 'nrwl/typescript-template',
116
- message: 'NPM Packages (monorepo with TypeScript packages ready to publish)',
117
- },
118
- {
119
- name: 'custom',
120
- message: 'Custom (advanced setup with additional frameworks)',
121
- },
122
- ],
123
- initial: 0,
124
- },
125
- ]);
126
- return template;
92
+ return 'custom';
127
93
  }
128
94
  async function determineAiAgents(parsedArgs) {
129
95
  return parsedArgs.aiAgents ?? [];
@@ -1 +1 @@
1
- {"version":3,"file":"ab-testing.d.ts","sourceRoot":"","sources":["../../../../../../packages/create-nx-workspace/src/utils/nx/ab-testing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ab-testing.d.ts","sourceRoot":"","sources":["../../../../../../packages/create-nx-workspace/src/utils/nx/ab-testing.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAsEtE;;;GAGG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAKvC;AAED;;;GAGG;AACH,wBAAgB,iCAAiC,IAAI,oBAAoB,CAExE;AAED,wBAAgB,qBAAqB,IAAI,OAAO,CAI/C;AAiBD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAQ/D;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,aAAa,CAEjE;AAED,eAAO,MAAM,cAAc,UAS1B,CAAC;AAEF,QAAA,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,CA8DjD,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,cAAc,CAAC;AACrD,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,UAAU,CAAA;KAAE,CAAC;IAC9C,iBAAiB,EAAE,oBAAoB,CAAC;CACzC;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,gBAAgB,CAAwC;IAEhE,SAAS,CAAC,GAAG,EAAE,UAAU,GAAG,WAAW;IAavC,2BAA2B,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM;IAQpD,iCAAiC,CAAC,GAAG,EAAE,UAAU,GAAG,oBAAoB;CAQzE;AAED,eAAO,MAAM,QAAQ,gBAAuB,CAAC;AAS7C;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,UAAU,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,cAAc,GACtB,mBAAmB,GACnB,sBAAsB,GACtB,mBAAmB,GACnB,oBAAoB,GACpB,uBAAuB,CAAC;AAE5B;;;GAGG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,cAAc,CAAC;CACtB,iBAuBA"}
@@ -133,16 +133,7 @@ function isEnterpriseCloudUrl(cloudUrl) {
133
133
  * @param cloudUrl - The Nx Cloud URL. If enterprise, always returns '0'.
134
134
  */
135
135
  function getBannerVariant(cloudUrl) {
136
- // Enterprise URLs always get plain link (variant 0)
137
- if (isEnterpriseCloudUrl(cloudUrl)) {
138
- return '0';
139
- }
140
- // Docs generation uses variant 0 for deterministic output
141
- if (process.env.NX_GENERATE_DOCS_PROCESS === 'true') {
142
- return '0';
143
- }
144
- // Standard URLs get variant 2 banner
145
- return '2';
136
+ return '0';
146
137
  }
147
138
  exports.NxCloudChoices = [
148
139
  'github',
@@ -151,6 +142,7 @@ exports.NxCloudChoices = [
151
142
  'bitbucket-pipelines',
152
143
  'circleci',
153
144
  'skip',
145
+ 'never',
154
146
  'yes', // Deprecated but still handled
155
147
  ];
156
148
  const messageOptions = {
@@ -177,72 +169,35 @@ const messageOptions = {
177
169
  ],
178
170
  /**
179
171
  * These messages are a fallback for setting up CI as well as when migrating major versions
180
- * Locked to "full platform" messaging (CLOUD-4235)
172
+ * NXC-4020: Restored to v22.1.3 wording
181
173
  */
182
174
  setupNxCloud: [
183
175
  {
184
- code: 'cloud-v2-full-platform-visit',
185
- message: 'Try the full Nx platform?',
176
+ code: 'enable-caching2',
177
+ message: 'Would you like remote caching to make your build faster?',
186
178
  initial: 0,
187
179
  choices: [
188
180
  { value: 'yes', name: 'Yes' },
189
- { value: 'skip', name: 'Skip' },
181
+ { value: 'skip', name: 'No - I would not like remote caching' },
190
182
  ],
191
- footer: '\nAutomatically fix broken PRs, 70% faster CI: https://nx.dev/nx-cloud',
183
+ footer: '\nRead more about remote caching at https://nx.dev/ci/features/remote-cache',
184
+ hint: '(can be disabled any time)',
192
185
  fallback: undefined,
193
- completionMessage: 'platform-setup',
186
+ completionMessage: 'cache-setup',
194
187
  },
195
188
  ],
196
189
  /**
197
190
  * Simplified Cloud prompt for template flow
198
191
  */
199
192
  setupNxCloudV2: [
200
- //{
201
- // code: 'cloud-v2-remote-cache-visit',
202
- // message: 'Enable remote caching with Nx Cloud?',
203
- // initial: 0,
204
- // choices: [
205
- // { value: 'yes', name: 'Yes' },
206
- // { value: 'skip', name: 'Skip' },
207
- // ],
208
- // footer:
209
- // '\nRemote caching makes your builds faster for development and in CI: https://nx.dev/ci/features/remote-cache',
210
- // fallback: undefined,
211
- // completionMessage: 'cache-setup',
212
- //},
213
- //{
214
- // code: 'cloud-v2-fast-ci-visit',
215
- // message: 'Speed up CI and reduce compute costs with Nx Cloud?',
216
- // initial: 0,
217
- // choices: [
218
- // { value: 'yes', name: 'Yes' },
219
- // { value: 'skip', name: 'Skip' },
220
- // ],
221
- // footer:
222
- // '\n70% faster CI, 60% less compute, Automatically fix broken PRs: https://nx.dev/nx-cloud',
223
- // fallback: undefined,
224
- // completionMessage: 'ci-setup',
225
- //},
226
- //{
227
- // code: 'cloud-v2-green-prs-visit',
228
- // message: 'Get to green PRs faster with Nx Cloud?',
229
- // initial: 0,
230
- // choices: [
231
- // { value: 'yes', name: 'Yes' },
232
- // { value: 'skip', name: 'Skip' },
233
- // ],
234
- // footer:
235
- // '\nAutomatically fix broken PRs, 70% faster CI: https://nx.dev/nx-cloud',
236
- // fallback: undefined,
237
- // completionMessage: 'ci-setup',
238
- //},
239
193
  {
240
- code: 'cloud-v2-full-platform-visit',
241
- message: 'Try the full Nx platform?',
194
+ code: 'connect-to-cloud',
195
+ message: 'Connect to Nx Cloud?',
242
196
  initial: 0,
243
197
  choices: [
244
198
  { value: 'yes', name: 'Yes' },
245
- { value: 'skip', name: 'Skip' },
199
+ { value: 'skip', name: 'Skip for now' },
200
+ { value: 'never', name: "No, don't ask again" },
246
201
  ],
247
202
  footer: '\nAutomatically fix broken PRs, 70% faster CI: https://nx.dev/nx-cloud',
248
203
  fallback: undefined,
@@ -14,7 +14,7 @@ declare const completionMessages: {
14
14
  readonly title: "Your CI setup is almost complete.";
15
15
  };
16
16
  readonly 'cache-setup': {
17
- readonly title: "Your remote cache setup is almost complete.";
17
+ readonly title: "Your remote cache is almost complete.";
18
18
  };
19
19
  readonly 'platform-setup': {
20
20
  readonly title: "Your platform setup is almost complete.";
@@ -1 +1 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../../../../packages/create-nx-workspace/src/utils/nx/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,GAAG,GAAG,GAAG,CAAC;AAuDtC;;;GAGG;AACH,QAAA,MAAM,kBAAkB;;;;;;;;;;CAUd,CAAC;AAEX,MAAM,MAAM,oBAAoB,GAAG,MAAM,OAAO,kBAAkB,CAAC;AAEnE,wBAAgB,oBAAoB,CAClC,oBAAoB,EAAE,oBAAoB,GAAG,SAAS,EACtD,GAAG,EAAE,MAAM,GAAG,IAAI,EAClB,WAAW,EAAE,aAAa,EAC1B,aAAa,CAAC,EAAE,MAAM,EACtB,aAAa,CAAC,EAAE,aAAa,GAC5B;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CA2BxC;AAED,wBAAgB,sBAAsB,IAAI;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CAUA"}
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../../../../packages/create-nx-workspace/src/utils/nx/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,GAAG,GAAG,GAAG,CAAC;AAiDtC;;;GAGG;AACH,QAAA,MAAM,kBAAkB;;;;;;;;;;CAWd,CAAC;AAEX,MAAM,MAAM,oBAAoB,GAAG,MAAM,OAAO,kBAAkB,CAAC;AAEnE,wBAAgB,oBAAoB,CAClC,oBAAoB,EAAE,oBAAoB,GAAG,SAAS,EACtD,GAAG,EAAE,MAAM,GAAG,IAAI,EAClB,WAAW,EAAE,aAAa,EAC1B,aAAa,CAAC,EAAE,MAAM,EACtB,aAAa,CAAC,EAAE,aAAa,GAC5B;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CA2BxC;AAED,wBAAgB,sBAAsB,IAAI;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CAUA"}
@@ -7,7 +7,7 @@ const git_1 = require("../git/git");
7
7
  * Generates a simple box banner with the setup URL.
8
8
  */
9
9
  function generateSimpleBanner(url) {
10
- const content = `Finish your set up here: ${url}`;
10
+ const content = `Finish setup: ${url}`;
11
11
  // Add padding around content (3 spaces on each side)
12
12
  const innerWidth = content.length + 6;
13
13
  const horizontalBorder = '+' + '-'.repeat(innerWidth) + '+';
@@ -32,19 +32,15 @@ function getBannerLines(variant, url) {
32
32
  // Variant 0: plain link (no banner)
33
33
  return [];
34
34
  }
35
- function getSetupMessage(url, pushedToVcs, workspaceName) {
36
- const githubUrl = workspaceName
37
- ? `https://github.com/new?name=${encodeURIComponent(workspaceName)}`
38
- : 'https://github.com/new';
35
+ function getSetupMessage(url, pushedToVcs) {
39
36
  if (pushedToVcs === git_1.VcsPushStatus.PushedToVcs) {
40
37
  return url
41
38
  ? `Go to Nx Cloud and finish the setup: ${url}`
42
39
  : 'Return to Nx Cloud and finish the setup.';
43
40
  }
44
- // User needs to push first
45
41
  const action = url ? 'go' : 'return';
46
42
  const urlSuffix = url ? `: ${url}` : '.';
47
- return `Push your repo (${githubUrl}), then ${action} to Nx Cloud and finish the setup${urlSuffix}`;
43
+ return `Push your repo, then ${action} to Nx Cloud and finish the setup${urlSuffix}`;
48
44
  }
49
45
  /**
50
46
  * Completion messages shown after workspace creation.
@@ -55,7 +51,8 @@ const completionMessages = {
55
51
  title: 'Your CI setup is almost complete.',
56
52
  },
57
53
  'cache-setup': {
58
- title: 'Your remote cache setup is almost complete.',
54
+ // NXC-4020: Restored to v22.1.3 wording (was "Your remote cache setup is almost complete.")
55
+ title: 'Your remote cache is almost complete.',
59
56
  },
60
57
  'platform-setup': {
61
58
  title: 'Your platform setup is almost complete.',
@@ -79,7 +76,7 @@ function getCompletionMessage(completionMessageKey, url, pushedToVcs, workspaceN
79
76
  }
80
77
  }
81
78
  // Variant 0 (control) or fallback: plain link message
82
- const bodyLines = [getSetupMessage(url, pushedToVcs, workspaceName)];
79
+ const bodyLines = [getSetupMessage(url, pushedToVcs)];
83
80
  return {
84
81
  title,
85
82
  bodyLines,
@@ -1,9 +1,9 @@
1
1
  import { VcsPushStatus } from '../git/git';
2
- import { CompletionMessageKey } from './messages';
3
- export type NxCloud = 'yes' | 'github' | 'gitlab' | 'azure' | 'bitbucket-pipelines' | 'circleci' | 'skip';
2
+ export type NxCloud = 'yes' | 'github' | 'gitlab' | 'azure' | 'bitbucket-pipelines' | 'circleci' | 'skip' | 'never';
4
3
  export declare function connectToNxCloudForTemplate(directory: string, installationSource: string, useGitHub?: boolean): Promise<string | null>;
5
4
  export declare function readNxCloudToken(directory: string): string;
6
5
  export declare function createNxCloudOnboardingUrl(nxCloud: NxCloud, token: string | undefined, directory: string, useGitHub?: boolean): Promise<string>;
7
- export declare function getNxCloudInfo(connectCloudUrl: string, pushedToVcs: VcsPushStatus, completionMessageKey?: CompletionMessageKey, workspaceName?: string): Promise<string>;
6
+ export declare function getNxCloudInfo(nxCloud: NxCloud, connectCloudUrl: string, pushedToVcs: VcsPushStatus, rawNxCloud?: NxCloud): Promise<string>;
8
7
  export declare function getSkippedNxCloudInfo(): string;
8
+ export declare function setNeverConnectToCloud(directory: string): void;
9
9
  //# sourceMappingURL=nx-cloud.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"nx-cloud.d.ts","sourceRoot":"","sources":["../../../../../../packages/create-nx-workspace/src/utils/nx/nx-cloud.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,EAGL,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAKpB,MAAM,MAAM,OAAO,GACf,KAAK,GACL,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,qBAAqB,GACrB,UAAU,GACV,MAAM,CAAC;AAEX,wBAAsB,2BAA2B,CAC/C,SAAS,EAAE,MAAM,EACjB,kBAAkB,EAAE,MAAM,EAC1B,SAAS,CAAC,EAAE,OAAO,GAClB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA+BxB;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,UAgBjD;AAED,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,OAAO,GAClB,OAAO,CAAC,MAAM,CAAC,CAgCjB;AAED,wBAAsB,cAAc,CAClC,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,aAAa,EAC1B,oBAAoB,CAAC,EAAE,oBAAoB,EAC3C,aAAa,CAAC,EAAE,MAAM,mBAuBvB;AAED,wBAAgB,qBAAqB,WAIpC"}
1
+ {"version":3,"file":"nx-cloud.d.ts","sourceRoot":"","sources":["../../../../../../packages/create-nx-workspace/src/utils/nx/nx-cloud.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAO3C,MAAM,MAAM,OAAO,GACf,KAAK,GACL,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,qBAAqB,GACrB,UAAU,GACV,MAAM,GACN,OAAO,CAAC;AAEZ,wBAAsB,2BAA2B,CAC/C,SAAS,EAAE,MAAM,EACjB,kBAAkB,EAAE,MAAM,EAC1B,SAAS,CAAC,EAAE,OAAO,GAClB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA+BxB;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,UAiBjD;AAED,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,OAAO,GAClB,OAAO,CAAC,MAAM,CAAC,CAgCjB;AAKD,wBAAsB,cAAc,CAClC,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,aAAa,EAC1B,UAAU,CAAC,EAAE,OAAO,mBAUrB;AAED,wBAAgB,qBAAqB,WAIpC;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAO9D"}
@@ -5,6 +5,7 @@ exports.readNxCloudToken = readNxCloudToken;
5
5
  exports.createNxCloudOnboardingUrl = createNxCloudOnboardingUrl;
6
6
  exports.getNxCloudInfo = getNxCloudInfo;
7
7
  exports.getSkippedNxCloudInfo = getSkippedNxCloudInfo;
8
+ exports.setNeverConnectToCloud = setNeverConnectToCloud;
8
9
  const output_1 = require("../output");
9
10
  const messages_1 = require("./messages");
10
11
  const ab_testing_1 = require("./ab-testing");
@@ -41,7 +42,8 @@ function readNxCloudToken(directory) {
41
42
  // nx-ignore-next-line
42
43
  ));
43
44
  const { accessToken, nxCloudId } = getCloudOptions(directory);
44
- nxCloudSpinner.succeed('Nx Cloud configuration was successfully added');
45
+ // NXC-4020: Restored to v22.1.3 wording
46
+ nxCloudSpinner.succeed('Nx Cloud has been set up successfully');
45
47
  return accessToken || nxCloudId;
46
48
  }
47
49
  async function createNxCloudOnboardingUrl(nxCloud, token, directory, useGitHub) {
@@ -62,21 +64,17 @@ async function createNxCloudOnboardingUrl(nxCloud, token, directory, useGitHub)
62
64
  return createNxCloudOnboardingURL(source, token, meta, false, useGitHub ??
63
65
  (nxCloud === 'yes' || nxCloud === 'github' || nxCloud === 'circleci'), directory);
64
66
  }
65
- async function getNxCloudInfo(connectCloudUrl, pushedToVcs, completionMessageKey, workspaceName) {
67
+ // NXC-4020: Restored v22.1.3 signature determines message from nxCloud value,
68
+ // uses rawNxCloud to decide whether to show URL (hide when user passed --nxCloud explicitly).
69
+ // Previous signature: (connectCloudUrl, pushedToVcs, completionMessageKey?, workspaceName?)
70
+ async function getNxCloudInfo(nxCloud, connectCloudUrl, pushedToVcs, rawNxCloud) {
71
+ const completionMessageKey = nxCloud === 'yes' ? 'cache-setup' : 'ci-setup';
66
72
  const out = new output_1.CLIOutput(false);
67
- // Get the banner variant based on the cloud URL
68
- // Enterprise URLs automatically get variant 0 (plain link)
69
- const bannerVariant = (0, ab_testing_1.getBannerVariant)(connectCloudUrl);
70
- const message = (0, messages_1.getCompletionMessage)(completionMessageKey, connectCloudUrl, pushedToVcs, workspaceName, bannerVariant);
71
- // Variant 2 (deferred connection): No title, just output the banner directly
72
- // without the NX badge since nothing was actually configured
73
- if (!message.title) {
74
- out.addNewline();
75
- out.writeLines(message.bodyLines ?? []);
76
- }
77
- else {
78
- out.success(message);
79
- }
73
+ // When rawNxCloud is a string (user explicitly passed --nxCloud), hide the URL
74
+ // because the user "already knows" where to go
75
+ const url = typeof rawNxCloud === 'string' ? null : connectCloudUrl;
76
+ const message = (0, messages_1.getCompletionMessage)(completionMessageKey, url, pushedToVcs);
77
+ out.success(message);
80
78
  return out.getOutput();
81
79
  }
82
80
  function getSkippedNxCloudInfo() {
@@ -84,3 +82,11 @@ function getSkippedNxCloudInfo() {
84
82
  out.success((0, messages_1.getSkippedCloudMessage)());
85
83
  return out.getOutput();
86
84
  }
85
+ function setNeverConnectToCloud(directory) {
86
+ const { readFileSync, writeFileSync } = require('fs');
87
+ const { join } = require('path');
88
+ const nxJsonPath = join(directory, 'nx.json');
89
+ const nxJson = JSON.parse(readFileSync(nxJsonPath, 'utf-8'));
90
+ nxJson.neverConnectToCloud = true;
91
+ writeFileSync(nxJsonPath, JSON.stringify(nxJson, null, 2) + '\n');
92
+ }