-
Notifications
You must be signed in to change notification settings - Fork 46
Expand file tree
/
Copy pathsolo.ts
More file actions
executable file
·31 lines (27 loc) · 1.13 KB
/
solo.ts
File metadata and controls
executable file
·31 lines (27 loc) · 1.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/usr/bin/env node
// SPDX-License-Identifier: Apache-2.0
import sourceMapSupport from 'source-map-support';
sourceMapSupport.install(); // Enable source maps for error stack traces
import * as fnm from './src/index.js';
import {type SoloLogger} from './src/core/logging/solo-logger.js';
import {InjectTokens} from './src/core/dependency-injection/inject-tokens.js';
import {container} from 'tsyringe-neo';
import {type ErrorHandler} from './src/core/error-handler.js';
const context: {logger: SoloLogger} = {logger: undefined};
await fnm
.main(process.argv, context)
.then((): void => {
context.logger?.info('Solo CLI completed, via entrypoint');
})
.catch((error): void => {
const errorHandler: ErrorHandler = container.resolve(InjectTokens.ErrorHandler);
errorHandler.handle(error);
});
// Exit with the proper exit code and force close any open handles that prevent Solo from exiting
if (context.logger) {
// eslint-disable-next-line n/no-process-exit
context.logger.flush((): void => process.exit(process.exitCode ?? 0));
} else {
// eslint-disable-next-line n/no-process-exit
process.exit(process.exitCode ?? 0);
}