@smoothbricks/cli 0.10.12 → 0.10.14

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/dist/cli.js CHANGED
@@ -286,6 +286,7 @@ function buildProgram() {
286
286
  .option('--mode <mode>', 'auto, affected, or run-many', 'auto')
287
287
  .option('--configuration <configuration>')
288
288
  .option('--stage <stage>')
289
+ .option('--stream-output', 'stream Nx task output without prefixes')
289
290
  .action(async (options) => {
290
291
  const { githubCiNxSmart } = await import('./github-ci/index.js');
291
292
  await githubCiNxSmart(await findRepoRoot(), options);
@@ -18,7 +18,7 @@ export interface GithubActionsEventPayload {
18
18
  }
19
19
  type NxSmartMode = 'auto' | 'affected' | 'run-many';
20
20
  export declare function cleanupGithubCiCache(root: string): Promise<void>;
21
- export declare function nxSmartArgs(target: string, mode: 'affected' | 'run-many', configuration?: string, stage?: string): string[];
21
+ export declare function nxSmartArgs(target: string, mode: 'affected' | 'run-many', configuration?: string, stage?: string, streamOutput?: boolean): string[];
22
22
  export declare function githubCiNxSmart(root: string, options: {
23
23
  target: string;
24
24
  name?: string;
@@ -26,6 +26,7 @@ export declare function githubCiNxSmart(root: string, options: {
26
26
  mode?: NxSmartMode;
27
27
  configuration?: string;
28
28
  stage?: string;
29
+ streamOutput?: boolean;
29
30
  }): Promise<void>;
30
31
  export interface NxRunManyOptions {
31
32
  targets: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/github-ci/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/github-ci/index.ts"],"names":[],"mappings":"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"}
@@ -138,7 +138,7 @@ async function addReferencesFrom(roots, path, cwd) {
138
138
  }
139
139
  }
140
140
  }
141
- export function nxSmartArgs(target, mode, configuration, stage) {
141
+ export function nxSmartArgs(target, mode, configuration, stage, streamOutput = false) {
142
142
  const args = [mode, '-t', target];
143
143
  if (configuration) {
144
144
  args.push(`--configuration=${configuration}`);
@@ -146,6 +146,9 @@ export function nxSmartArgs(target, mode, configuration, stage) {
146
146
  if (stage) {
147
147
  args.push(`--stage=${stage}`);
148
148
  }
149
+ if (streamOutput) {
150
+ args.push('--outputStyle=stream-without-prefixes');
151
+ }
149
152
  args.push(`--exclude=tag:ci:skip:${target}`, `--parallel=${NX_PARALLEL}`);
150
153
  return args;
151
154
  }
@@ -154,7 +157,7 @@ export async function githubCiNxSmart(root, options) {
154
157
  const step = options.step ?? '';
155
158
  await createGithubStatus(name, step);
156
159
  const mode = resolveNxSmartMode(options.mode ?? 'auto');
157
- const nxArgs = nxSmartArgs(options.target, mode, options.configuration, options.stage);
160
+ const nxArgs = nxSmartArgs(options.target, mode, options.configuration, options.stage, options.streamOutput);
158
161
  const status = await runStatus('nx', nxArgs, root);
159
162
  await updateGithubStatus(name, status === 0 ? 'success' : 'failure', step);
160
163
  if (status !== 0) {
@@ -253,11 +253,13 @@ function renderE2eDeploymentJob(options) {
253
253
  return '';
254
254
  return `
255
255
  e2e-deployment:
256
- name: Deployment E2E
256
+ name: E2E Tests (Deployed Stage)
257
257
  needs: main
258
258
  ${renderRunsOnLine(options.runsOn)}
259
259
  timeout-minutes: 15
260
260
  if: \${{ needs.main.result == 'success' && needs.main.outputs.deployment-stage != '' }}
261
+ env:
262
+ GH_TOKEN: \${{ github.token }}
261
263
  steps:
262
264
  # Step 1: GitHub adds "Set up job" automatically
263
265
  # Step 2
@@ -273,9 +275,9 @@ ${renderRunsOnLine(options.runsOn)}
273
275
  uses: ./.github/actions/setup-devenv
274
276
 
275
277
  # Step 4
276
- - name: Deployment E2E
278
+ - name: E2E Tests (Deployed Stage)
277
279
  # prettier-ignore
278
- run: smoo github-ci nx-smart --target e2e-deployment --mode run-many --stage "\${{ needs.main.outputs.deployment-stage }}" --name "Deployment E2E" --step 4
280
+ run: smoo github-ci nx-smart --target e2e-deployment --mode run-many --stage "\${{ needs.main.outputs.deployment-stage }}" --stream-output --name "E2E Tests (Deployed Stage)" --step 4
279
281
 
280
282
  # Step 5
281
283
  - name: 🧹 Cleanup and cache Nix/devenv
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smoothbricks/cli",
3
- "version": "0.10.12",
3
+ "version": "0.10.14",
4
4
  "type": "module",
5
5
  "description": "SmoothBricks monorepo automation CLI",
6
6
  "bin": {
package/src/cli.ts CHANGED
@@ -336,6 +336,7 @@ function buildProgram(): Command {
336
336
  .option('--mode <mode>', 'auto, affected, or run-many', 'auto')
337
337
  .option('--configuration <configuration>')
338
338
  .option('--stage <stage>')
339
+ .option('--stream-output', 'stream Nx task output without prefixes')
339
340
  .action(
340
341
  async (options: {
341
342
  target: string;
@@ -344,6 +345,7 @@ function buildProgram(): Command {
344
345
  mode?: 'auto' | 'affected' | 'run-many';
345
346
  configuration?: string;
346
347
  stage?: string;
348
+ streamOutput?: boolean;
347
349
  }) => {
348
350
  const { githubCiNxSmart } = await import('./github-ci/index.js');
349
351
  await githubCiNxSmart(await findRepoRoot(), options);
@@ -134,12 +134,13 @@ describe('GitHub CI Nx target expansion', () => {
134
134
  ).toEqual(['native:package-linux', 'native:compile-linux', 'native:build']);
135
135
  });
136
136
 
137
- it('adds optional stage before the generic target skip tag only to nx-smart', () => {
138
- expect(nxSmartArgs('e2e-deployment', 'run-many', undefined, 'pr123')).toEqual([
137
+ it('adds optional stage and streaming before the generic target skip tag only to nx-smart', () => {
138
+ expect(nxSmartArgs('e2e-deployment', 'run-many', undefined, 'pr123', true)).toEqual([
139
139
  'run-many',
140
140
  '-t',
141
141
  'e2e-deployment',
142
142
  '--stage=pr123',
143
+ '--outputStyle=stream-without-prefixes',
143
144
  '--exclude=tag:ci:skip:e2e-deployment',
144
145
  '--parallel=100%',
145
146
  ]);
@@ -159,6 +159,7 @@ export function nxSmartArgs(
159
159
  mode: 'affected' | 'run-many',
160
160
  configuration?: string,
161
161
  stage?: string,
162
+ streamOutput = false,
162
163
  ): string[] {
163
164
  const args = [mode, '-t', target];
164
165
  if (configuration) {
@@ -167,19 +168,30 @@ export function nxSmartArgs(
167
168
  if (stage) {
168
169
  args.push(`--stage=${stage}`);
169
170
  }
171
+ if (streamOutput) {
172
+ args.push('--outputStyle=stream-without-prefixes');
173
+ }
170
174
  args.push(`--exclude=tag:ci:skip:${target}`, `--parallel=${NX_PARALLEL}`);
171
175
  return args;
172
176
  }
173
177
 
174
178
  export async function githubCiNxSmart(
175
179
  root: string,
176
- options: { target: string; name?: string; step?: string; mode?: NxSmartMode; configuration?: string; stage?: string },
180
+ options: {
181
+ target: string;
182
+ name?: string;
183
+ step?: string;
184
+ mode?: NxSmartMode;
185
+ configuration?: string;
186
+ stage?: string;
187
+ streamOutput?: boolean;
188
+ },
177
189
  ): Promise<void> {
178
190
  const name = options.name ?? options.target;
179
191
  const step = options.step ?? '';
180
192
  await createGithubStatus(name, step);
181
193
  const mode = resolveNxSmartMode(options.mode ?? 'auto');
182
- const nxArgs = nxSmartArgs(options.target, mode, options.configuration, options.stage);
194
+ const nxArgs = nxSmartArgs(options.target, mode, options.configuration, options.stage, options.streamOutput);
183
195
  const status = await runStatus('nx', nxArgs, root);
184
196
  await updateGithubStatus(name, status === 0 ? 'success' : 'failure', step);
185
197
  if (status !== 0) {
@@ -77,17 +77,20 @@ describe('CI workflow definition', () => {
77
77
  const rendered = renderCiWorkflowYaml(options({ deploy: true, e2eDeployment: true, runsOn: [...nixosRunsOn] }));
78
78
 
79
79
  expect(rendered).toContain('deployment-stage: ${{ steps.deploy.outputs.stage }}');
80
- expect(rendered).toContain(' e2e-deployment:\n name: Deployment E2E\n needs: main');
80
+ expect(rendered).toContain(' e2e-deployment:\n name: E2E Tests (Deployed Stage)\n needs: main');
81
81
  expect(rendered).not.toContain('\n\n\n e2e-deployment:');
82
82
  expect(rendered).toContain(
83
83
  "if: ${{ needs.main.result == 'success' && needs.main.outputs.deployment-stage != '' }}",
84
84
  );
85
85
  expect(rendered).toContain('timeout-minutes: 15');
86
+ expect(rendered).toContain(
87
+ "if: ${{ needs.main.result == 'success' && needs.main.outputs.deployment-stage != '' }}\n env:\n GH_TOKEN: ${{ github.token }}\n steps:",
88
+ );
86
89
  expect(rendered).toContain('# prettier-ignore\n run: smoo github-ci nx-smart --target e2e-deployment');
87
90
  expect(rendered).toContain(
88
- 'smoo github-ci nx-smart --target e2e-deployment --mode run-many --stage "${{ needs.main.outputs.deployment-stage }}" --name "Deployment E2E" --step 4',
91
+ 'smoo github-ci nx-smart --target e2e-deployment --mode run-many --stage "${{ needs.main.outputs.deployment-stage }}" --stream-output --name "E2E Tests (Deployed Stage)" --step 4',
89
92
  );
90
- expect(rendered.match(/name: Deployment E2E/g)).toHaveLength(2);
93
+ expect(rendered.match(/name: E2E Tests \(Deployed Stage\)/g)).toHaveLength(2);
91
94
  });
92
95
 
93
96
  it('omits optional browser and deployment-E2E lanes when disabled', () => {
@@ -295,11 +295,13 @@ function renderE2eDeploymentJob(options: CiWorkflowDefinitionOptions): string {
295
295
  if (!options.e2eDeployment) return '';
296
296
  return `
297
297
  e2e-deployment:
298
- name: Deployment E2E
298
+ name: E2E Tests (Deployed Stage)
299
299
  needs: main
300
300
  ${renderRunsOnLine(options.runsOn)}
301
301
  timeout-minutes: 15
302
302
  if: \${{ needs.main.result == 'success' && needs.main.outputs.deployment-stage != '' }}
303
+ env:
304
+ GH_TOKEN: \${{ github.token }}
303
305
  steps:
304
306
  # Step 1: GitHub adds "Set up job" automatically
305
307
  # Step 2
@@ -315,9 +317,9 @@ ${renderRunsOnLine(options.runsOn)}
315
317
  uses: ./.github/actions/setup-devenv
316
318
 
317
319
  # Step 4
318
- - name: Deployment E2E
320
+ - name: E2E Tests (Deployed Stage)
319
321
  # prettier-ignore
320
- run: smoo github-ci nx-smart --target e2e-deployment --mode run-many --stage "\${{ needs.main.outputs.deployment-stage }}" --name "Deployment E2E" --step 4
322
+ run: smoo github-ci nx-smart --target e2e-deployment --mode run-many --stage "\${{ needs.main.outputs.deployment-stage }}" --stream-output --name "E2E Tests (Deployed Stage)" --step 4
321
323
 
322
324
  # Step 5
323
325
  - name: 🧹 Cleanup and cache Nix/devenv