From 33bdc40533393a018b95cf3cd49c21518cda0dc8 Mon Sep 17 00:00:00 2001 From: Anillc Date: Mon, 2 May 2022 01:57:53 +0800 Subject: [PATCH] fix(core): re-parse redirected commands, fix #540 --- packages/core/src/internal/runtime.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/packages/core/src/internal/runtime.ts b/packages/core/src/internal/runtime.ts index 381f9968de..e05773cb29 100644 --- a/packages/core/src/internal/runtime.ts +++ b/packages/core/src/internal/runtime.ts @@ -80,9 +80,20 @@ export default function runtime(ctx: Context) { } if (command['_actions'].length) return + // subcommand redirect const arg0 = args.shift() || '' const subcommand = ctx.getCommand(command.name + '.' + arg0) if (subcommand) { + // save command names + const commands = session['__redirected_commands'] ||= [ + `(${command.name}${command._aliases.length !== 0 ? '|' + command._aliases.join('|') : ''})`, + ] + commands.push(arg0) + const regex = new RegExp(`^${commands.join('[. ]')}( |$)`) + // remove command names for re-parsing + argv = Argv.parse(session.parsed.content.replace(regex, '')) + argv.session = session + argv = subcommand.parse(argv) return session.execute({ ...argv, command: subcommand }) } else { return executeHelp(session, command.name)