Skip to content

Commit

Permalink
feat: add ability to pass NestApplicationContextOptions to CommandFac…
Browse files Browse the repository at this point in the history
…toryRunOptions (#914)
  • Loading branch information
jmcdo29 authored Jun 10, 2023
2 parents 2c83a52 + 6cc1112 commit daeb36d
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 33 deletions.
8 changes: 8 additions & 0 deletions .changeset/moody-books-battle.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
'nest-commander': minor
---

Add ability to pass NestApplicationContextOptions to CommandFactoryRunOptions.

Now CommandFactory.createWithoutRunning() can accept more options, for example,
bufferLogs to pre-save Nest startup logs.
4 changes: 3 additions & 1 deletion packages/nest-commander/src/command-factory.interface.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { LoggerService, LogLevel } from '@nestjs/common';
import { NestApplicationContextOptions } from '@nestjs/common/interfaces/nest-application-context-options.interface';

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

export interface CommandFactoryRunOptions {
export interface CommandFactoryRunOptions
extends NestApplicationContextOptions {
logger?: NestLogger;
errorHandler?: ErrorHandler;
usePlugins?: boolean;
Expand Down
51 changes: 19 additions & 32 deletions packages/nest-commander/src/command.factory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,7 @@ export class CommandFactory {
});
const app = await NestFactory.createApplicationContext(
commandRunnerModule,
{
logger: options.logger,
},
options,
);
return app;
}
Expand All @@ -76,35 +74,24 @@ export class CommandFactory {
protected static getOptions(
optionsOrLogger: CommandFactoryRunOptions | NestLogger,
): DefinedCommandFactoryRunOptions {
let logger: NestLogger | undefined;
let tempHandler: ((err: Error) => void) | undefined;
let usePlugins = false;
let cliName = 'nest-commander';
let serviceErrorHandler = undefined;
let enablePositionalOptions = false;
let enablePassThroughOptions = false;
if (this.isFactoryOptionsObject(optionsOrLogger)) {
({
logger,
errorHandler: tempHandler,
cliName = cliName,
usePlugins = usePlugins,
serviceErrorHandler,
enablePositionalOptions = enablePositionalOptions,
enablePassThroughOptions = enablePassThroughOptions,
} = optionsOrLogger);
} else {
logger = optionsOrLogger;
}
return {
logger,
errorHandler: tempHandler,
usePlugins,
cliName,
serviceErrorHandler,
enablePositionalOptions,
enablePassThroughOptions,
};
let options: CommandFactoryRunOptions = {};
const isOptionsIsFactoryOptionsObject =
this.isFactoryOptionsObject(optionsOrLogger);
options = isOptionsIsFactoryOptionsObject ? optionsOrLogger : options;

options.logger =
(isOptionsIsFactoryOptionsObject
? (optionsOrLogger as CommandFactoryRunOptions).logger
: (optionsOrLogger as NestLogger)) || false;
options.errorHandler = options.errorHandler || undefined;
options.usePlugins = options.usePlugins || false;
options.cliName = options.cliName || 'nest-commander';
options.serviceErrorHandler = options.serviceErrorHandler || undefined;
options.enablePositionalOptions = options.enablePositionalOptions || false;
options.enablePassThroughOptions =
options.enablePassThroughOptions || false;

return options as DefinedCommandFactoryRunOptions;
}

protected static isFactoryOptionsObject(
Expand Down

0 comments on commit daeb36d

Please sign in to comment.