Skip to content

Commit daeb36d

Browse files
authored
feat: add ability to pass NestApplicationContextOptions to CommandFactoryRunOptions (#914)
2 parents 2c83a52 + 6cc1112 commit daeb36d

File tree

3 files changed

+30
-33
lines changed

3 files changed

+30
-33
lines changed

.changeset/moody-books-battle.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
'nest-commander': minor
3+
---
4+
5+
Add ability to pass NestApplicationContextOptions to CommandFactoryRunOptions.
6+
7+
Now CommandFactory.createWithoutRunning() can accept more options, for example,
8+
bufferLogs to pre-save Nest startup logs.

packages/nest-commander/src/command-factory.interface.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { LoggerService, LogLevel } from '@nestjs/common';
2+
import { NestApplicationContextOptions } from '@nestjs/common/interfaces/nest-application-context-options.interface';
23

34
export type ErrorHandler = (err: Error) => void;
45
export type NestLogger = LoggerService | LogLevel[] | false;
@@ -9,7 +10,8 @@ export interface DefinedCommandFactoryRunOptions
910
usePlugins: boolean;
1011
}
1112

12-
export interface CommandFactoryRunOptions {
13+
export interface CommandFactoryRunOptions
14+
extends NestApplicationContextOptions {
1315
logger?: NestLogger;
1416
errorHandler?: ErrorHandler;
1517
usePlugins?: boolean;

packages/nest-commander/src/command.factory.ts

Lines changed: 19 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,7 @@ export class CommandFactory {
4848
});
4949
const app = await NestFactory.createApplicationContext(
5050
commandRunnerModule,
51-
{
52-
logger: options.logger,
53-
},
51+
options,
5452
);
5553
return app;
5654
}
@@ -76,35 +74,24 @@ export class CommandFactory {
7674
protected static getOptions(
7775
optionsOrLogger: CommandFactoryRunOptions | NestLogger,
7876
): DefinedCommandFactoryRunOptions {
79-
let logger: NestLogger | undefined;
80-
let tempHandler: ((err: Error) => void) | undefined;
81-
let usePlugins = false;
82-
let cliName = 'nest-commander';
83-
let serviceErrorHandler = undefined;
84-
let enablePositionalOptions = false;
85-
let enablePassThroughOptions = false;
86-
if (this.isFactoryOptionsObject(optionsOrLogger)) {
87-
({
88-
logger,
89-
errorHandler: tempHandler,
90-
cliName = cliName,
91-
usePlugins = usePlugins,
92-
serviceErrorHandler,
93-
enablePositionalOptions = enablePositionalOptions,
94-
enablePassThroughOptions = enablePassThroughOptions,
95-
} = optionsOrLogger);
96-
} else {
97-
logger = optionsOrLogger;
98-
}
99-
return {
100-
logger,
101-
errorHandler: tempHandler,
102-
usePlugins,
103-
cliName,
104-
serviceErrorHandler,
105-
enablePositionalOptions,
106-
enablePassThroughOptions,
107-
};
77+
let options: CommandFactoryRunOptions = {};
78+
const isOptionsIsFactoryOptionsObject =
79+
this.isFactoryOptionsObject(optionsOrLogger);
80+
options = isOptionsIsFactoryOptionsObject ? optionsOrLogger : options;
81+
82+
options.logger =
83+
(isOptionsIsFactoryOptionsObject
84+
? (optionsOrLogger as CommandFactoryRunOptions).logger
85+
: (optionsOrLogger as NestLogger)) || false;
86+
options.errorHandler = options.errorHandler || undefined;
87+
options.usePlugins = options.usePlugins || false;
88+
options.cliName = options.cliName || 'nest-commander';
89+
options.serviceErrorHandler = options.serviceErrorHandler || undefined;
90+
options.enablePositionalOptions = options.enablePositionalOptions || false;
91+
options.enablePassThroughOptions =
92+
options.enablePassThroughOptions || false;
93+
94+
return options as DefinedCommandFactoryRunOptions;
10895
}
10996

11097
protected static isFactoryOptionsObject(

0 commit comments

Comments
 (0)