diff options
Diffstat (limited to 'src/server/repl.ts')
-rw-r--r-- | src/server/repl.ts | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/server/repl.ts b/src/server/repl.ts index faf1eab15..ad55b6aaa 100644 --- a/src/server/repl.ts +++ b/src/server/repl.ts @@ -97,20 +97,25 @@ export default class Repl { const candidates = registered.filter(({ argPatterns: { length: count } }) => count === length); for (const { argPatterns, action } of candidates) { const parsed: string[] = []; - let matched = false; + let matched = true; if (length) { for (let i = 0; i < length; i++) { let matches: RegExpExecArray | null; if ((matches = argPatterns[i].exec(args[i])) === null) { + matched = false; break; } parsed.push(matches[0]); } - matched = true; } if (!length || matched) { - await action(parsed); - this.valid(`${command} ${parsed.join(" ")}`); + const result = action(parsed); + const resolve = () => this.valid(`${command} ${parsed.join(" ")}`); + if (result instanceof Promise) { + result.then(resolve); + } else { + resolve(); + } return; } } |