diff --git a/packages/core/server/src/__tests__/app-command.test.ts b/packages/core/server/src/__tests__/app-command.test.ts index a28f7cb949..b9869c8b91 100644 --- a/packages/core/server/src/__tests__/app-command.test.ts +++ b/packages/core/server/src/__tests__/app-command.test.ts @@ -40,4 +40,21 @@ describe('app command', () => { expect(app.cli.parseHandleByIPCServer(['node', 'cli', 'nocobase', 'subparent', 'testaa'])).toBeTruthy(); expect(app.cli.parseHandleByIPCServer(['node', 'cli', 'nocobase', 'subparent', 'testbb'])).toBeFalsy(); }); + + it('should correctly parse the command multiple times with varying parameters', async () => { + const fn = jest.fn(); + + app + .command('test1') + .option('-a, --aaa ', 'aaa option') + .action((options) => { + fn(options); + }); + + await app.runCommand('test1', '-a', 'aaa'); + expect(fn).toBeCalledWith({ aaa: 'aaa' }); + + await app.runCommand('test1'); + expect(fn).toBeCalledWith({}); + }); }); diff --git a/packages/core/server/src/application.ts b/packages/core/server/src/application.ts index e1a17dc8fc..bf08beb038 100644 --- a/packages/core/server/src/application.ts +++ b/packages/core/server/src/application.ts @@ -368,7 +368,6 @@ export class Application exten .usage('[command] [options]') .hook('preAction', async (_, actionCommand) => { this._actionCommand = actionCommand; - this.activatedCommand = { name: getCommandFullName(actionCommand), }; @@ -416,6 +415,7 @@ export class Application exten return command; } catch (error) { + console.log({ error }); if (!this.activatedCommand) { this.activatedCommand = { name: 'unknown', @@ -442,8 +442,8 @@ export class Application exten _actionCommand.addOption(option); } } - this.activatedCommand = null; this._actionCommand = null; + this.activatedCommand = null; } }