Skip to content

Commit b48fc71

Browse files
authored
Revert "fix: Handle uncaught exception in create-amplify (#2828)" (#2857)
This reverts commit 995b335.
1 parent 995b335 commit b48fc71

File tree

10 files changed

+50
-95
lines changed

10 files changed

+50
-95
lines changed

.changeset/eighty-spoons-tickle.md

Lines changed: 0 additions & 7 deletions
This file was deleted.

packages/cli-core/API.md

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,7 @@
55
```ts
66

77
import { AmplifyIOHost } from '@aws-amplify/plugin-types';
8-
import { Argv } from 'yargs';
98
import { PackageManagerController } from '@aws-amplify/plugin-types';
10-
import { UsageDataEmitter } from '@aws-amplify/platform-core';
119
import { WriteStream } from 'node:tty';
1210
import z from 'zod';
1311

@@ -35,18 +33,12 @@ export class AmplifyPrompter {
3533
}) => Promise<boolean>;
3634
}
3735

38-
// @public
39-
export const attachUnhandledExceptionListeners: (usageDataEmitter?: UsageDataEmitter) => void;
40-
4136
// @public (undocumented)
4237
export type ColorName = (typeof colorNames)[number];
4338

4439
// @public (undocumented)
4540
export const colorNames: readonly ["Green", "Yellow", "Blue", "Magenta", "Cyan", "Red"];
4641

47-
// @public
48-
export const extractSubCommands: (yargs: Argv) => string | undefined;
49-
5042
// @public
5143
export class Format {
5244
constructor(packageManagerRunnerName?: string);
@@ -83,9 +75,6 @@ export class Format {
8375
// @public (undocumented)
8476
export const format: Format;
8577

86-
// @public
87-
export const generateCommandFailureHandler: (parser?: Argv, usageDataEmitter?: UsageDataEmitter) => ((message: string, error: Error) => Promise<void>);
88-
8978
// @public (undocumented)
9079
export enum LogLevel {
9180
// (undocumented)
@@ -196,7 +185,7 @@ export const noticeSchema: z.ZodObject<{
196185
errorMessage: string;
197186
})[];
198187
link?: string | undefined;
199-
frequency?: "command" | "once" | "deployment" | "daily" | undefined;
188+
frequency?: "once" | "command" | "deployment" | "daily" | undefined;
200189
validFrom?: number | undefined;
201190
validTo?: number | undefined;
202191
}, {
@@ -224,7 +213,7 @@ export const noticeSchema: z.ZodObject<{
224213
errorMessage: string;
225214
})[];
226215
link?: string | undefined;
227-
frequency?: "command" | "once" | "deployment" | "daily" | undefined;
216+
frequency?: "once" | "command" | "deployment" | "daily" | undefined;
228217
validFrom?: number | undefined;
229218
validTo?: number | undefined;
230219
}>;
@@ -325,7 +314,7 @@ export const noticesManifestSchema: z.ZodObject<{
325314
errorMessage: string;
326315
})[];
327316
link?: string | undefined;
328-
frequency?: "command" | "once" | "deployment" | "daily" | undefined;
317+
frequency?: "once" | "command" | "deployment" | "daily" | undefined;
329318
validFrom?: number | undefined;
330319
validTo?: number | undefined;
331320
}, {
@@ -353,7 +342,7 @@ export const noticesManifestSchema: z.ZodObject<{
353342
errorMessage: string;
354343
})[];
355344
link?: string | undefined;
356-
frequency?: "command" | "once" | "deployment" | "daily" | undefined;
345+
frequency?: "once" | "command" | "deployment" | "daily" | undefined;
357346
validFrom?: number | undefined;
358347
validTo?: number | undefined;
359348
}>, "many">;
@@ -383,7 +372,7 @@ export const noticesManifestSchema: z.ZodObject<{
383372
errorMessage: string;
384373
})[];
385374
link?: string | undefined;
386-
frequency?: "command" | "once" | "deployment" | "daily" | undefined;
375+
frequency?: "once" | "command" | "deployment" | "daily" | undefined;
387376
validFrom?: number | undefined;
388377
validTo?: number | undefined;
389378
}[];
@@ -413,7 +402,7 @@ export const noticesManifestSchema: z.ZodObject<{
413402
errorMessage: string;
414403
})[];
415404
link?: string | undefined;
416-
frequency?: "command" | "once" | "deployment" | "daily" | undefined;
405+
frequency?: "once" | "command" | "deployment" | "daily" | undefined;
417406
validFrom?: number | undefined;
418407
validTo?: number | undefined;
419408
}[];

packages/cli-core/package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
"strip-ansi": "^7.1.0",
3030
"wrap-ansi": "^9.0.0",
3131
"semver": "^7.6.3",
32-
"zod": "3.25.17",
33-
"yargs": "^17.7.2"
32+
"zod": "3.25.17"
3433
}
3534
}

packages/cli-core/src/index.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,3 @@ export * from './package-manager-controller/package_manager_controller_factory.j
66
export * from './loggers/amplify_io_events_bridge_singleton_factory.js';
77
export * from './notices/notices.js';
88
export * from './notices/notices_manifest_validator.js';
9-
export * from './error_handler.js';
10-
export * from './extract_sub_commands.js';

packages/cli/src/ampx.ts

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@ import {
77
import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks';
88
import { BasicTracerProvider } from '@opentelemetry/sdk-trace-base';
99
import { createMainParser } from './main_parser_factory.js';
10+
import {
11+
attachUnhandledExceptionListeners,
12+
generateCommandFailureHandler,
13+
} from './error_handler.js';
14+
import { extractSubCommands } from './extract_sub_commands.js';
1015
import {
1116
AmplifyFault,
1217
PackageJsonReader,
@@ -20,13 +25,7 @@ import {
2025
import { fileURLToPath } from 'node:url';
2126
import { verifyCommandName } from './verify_command_name.js';
2227
import { hideBin } from 'yargs/helpers';
23-
import {
24-
PackageManagerControllerFactory,
25-
attachUnhandledExceptionListeners,
26-
extractSubCommands,
27-
format,
28-
generateCommandFailureHandler,
29-
} from '@aws-amplify/cli-core';
28+
import { PackageManagerControllerFactory, format } from '@aws-amplify/cli-core';
3029
import { NoticesRenderer } from './notices/notices_renderer.js';
3130
import { extractCommandInfo } from './extract_command_info.js';
3231
import { DeepPartial } from '@aws-amplify/plugin-types';

packages/cli-core/src/error_handler.test.ts renamed to packages/cli/src/error_handler.test.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,7 @@ import {
44
generateCommandFailureHandler,
55
} from './error_handler.js';
66
import { Argv } from 'yargs';
7-
import { format } from './format/format.js';
8-
import { LogLevel } from './printer/printer.js';
9-
import { printer } from './printer.js';
7+
import { LogLevel, format, printer } from '@aws-amplify/cli-core';
108
import assert from 'node:assert';
119
import { AmplifyUserError, UsageDataEmitter } from '@aws-amplify/platform-core';
1210

packages/cli-core/src/error_handler.ts renamed to packages/cli/src/error_handler.ts

Lines changed: 16 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
import { format } from './format/format.js';
2-
import { LogLevel } from './printer/printer.js';
3-
import { printer } from './printer.js';
1+
import { LogLevel, format, printer } from '@aws-amplify/cli-core';
42
import { Argv } from 'yargs';
53
import { AmplifyError, UsageDataEmitter } from '@aws-amplify/platform-core';
64
import { extractSubCommands } from './extract_sub_commands.js';
@@ -19,7 +17,7 @@ type HandleErrorProps = {
1917
* Attaches process listeners to handle unhandled exceptions and rejections
2018
*/
2119
export const attachUnhandledExceptionListeners = (
22-
usageDataEmitter?: UsageDataEmitter,
20+
usageDataEmitter: UsageDataEmitter,
2321
): void => {
2422
if (hasAttachUnhandledExceptionListenersBeenCalled) {
2523
return;
@@ -56,7 +54,7 @@ export const attachUnhandledExceptionListeners = (
5654
* This prevents our top-level error handler from being invoked after the yargs error handler has already been invoked
5755
*/
5856
export const generateCommandFailureHandler = (
59-
parser?: Argv,
57+
parser: Argv,
6058
usageDataEmitter?: UsageDataEmitter,
6159
): ((message: string, error: Error) => Promise<void>) => {
6260
/**
@@ -65,29 +63,19 @@ export const generateCommandFailureHandler = (
6563
* @param error error thrown by yargs handler
6664
*/
6765
const handleCommandFailure = async (message: string, error?: Error) => {
68-
if (!parser) {
69-
await handleErrorSafe({
70-
error,
71-
message,
72-
});
73-
}
74-
75-
// for ampx commands
76-
if (parser) {
77-
const printHelp = () => {
78-
printer.printNewLine();
79-
parser.showHelp();
80-
printer.printNewLine();
81-
};
82-
await handleErrorSafe({
83-
command: extractSubCommands(parser),
84-
printMessagePreamble: printHelp,
85-
error,
86-
message,
87-
usageDataEmitter,
88-
});
89-
parser.exit(1, error || new Error(message));
90-
}
66+
const printHelp = () => {
67+
printer.printNewLine();
68+
parser.showHelp();
69+
printer.printNewLine();
70+
};
71+
await handleErrorSafe({
72+
command: extractSubCommands(parser),
73+
printMessagePreamble: printHelp,
74+
error,
75+
message,
76+
usageDataEmitter,
77+
});
78+
parser.exit(1, error || new Error(message));
9179
};
9280
return handleCommandFailure;
9381
};

packages/cli/src/test-utils/command_runner.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
import { Argv } from 'yargs';
22
import { AsyncLocalStorage } from 'node:async_hooks';
33
import { UsageDataEmitter } from '@aws-amplify/platform-core';
4-
import {
5-
extractSubCommands,
6-
generateCommandFailureHandler,
7-
} from '@aws-amplify/cli-core';
4+
import { generateCommandFailureHandler } from '../error_handler.js';
5+
import { extractSubCommands } from '../extract_sub_commands.js';
86

97
class OutputInterceptor {
108
private output = '';

packages/create-amplify/src/create_amplify.ts

Lines changed: 18 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -8,44 +8,37 @@
88
*/
99

1010
import {
11+
LogLevel,
1112
PackageManagerControllerFactory,
12-
attachUnhandledExceptionListeners,
1313
format,
14-
generateCommandFailureHandler,
14+
printer,
1515
} from '@aws-amplify/cli-core';
1616
import { ProjectRootValidator } from './project_root_validator.js';
1717
import { AmplifyProjectCreator } from './amplify_project_creator.js';
1818
import { getProjectRoot } from './get_project_root.js';
1919
import { GitIgnoreInitializer } from './gitignore_initializer.js';
2020
import { InitialProjectFileGenerator } from './initial_project_file_generator.js';
2121

22-
attachUnhandledExceptionListeners();
23-
const errorHandler = generateCommandFailureHandler();
22+
const projectRoot = await getProjectRoot();
2423

25-
try {
26-
const projectRoot = await getProjectRoot();
27-
28-
const packageManagerControllerFactory = new PackageManagerControllerFactory(
29-
projectRoot,
30-
);
24+
const packageManagerControllerFactory = new PackageManagerControllerFactory(
25+
projectRoot,
26+
);
3127

32-
const packageManagerController =
33-
packageManagerControllerFactory.getPackageManagerController();
28+
const packageManagerController =
29+
packageManagerControllerFactory.getPackageManagerController();
3430

35-
const amplifyProjectCreator = new AmplifyProjectCreator(
36-
projectRoot,
37-
packageManagerController,
38-
new ProjectRootValidator(projectRoot),
39-
new GitIgnoreInitializer(projectRoot),
40-
new InitialProjectFileGenerator(projectRoot, packageManagerController),
41-
);
31+
const amplifyProjectCreator = new AmplifyProjectCreator(
32+
projectRoot,
33+
packageManagerController,
34+
new ProjectRootValidator(projectRoot),
35+
new GitIgnoreInitializer(projectRoot),
36+
new InitialProjectFileGenerator(projectRoot, packageManagerController),
37+
);
4238

39+
try {
4340
await amplifyProjectCreator.create();
4441
} catch (err) {
45-
if (err instanceof Error) {
46-
await errorHandler(format.error(err), err);
47-
} else {
48-
// eslint-disable-next-line @aws-amplify/amplify-backend-rules/prefer-amplify-errors
49-
await errorHandler(format.error(err), new Error(JSON.stringify(err)));
50-
}
42+
printer.log(format.error(err), LogLevel.ERROR);
43+
process.exitCode = 1;
5144
}

0 commit comments

Comments
 (0)