fix(cli): keep plugin parent help lightweight

This commit is contained in:
Vincent Koc
2026-05-14 14:09:12 +08:00
parent c635f0087e
commit 2ab08c8a19
7 changed files with 62 additions and 15 deletions

View File

@@ -65,14 +65,14 @@ async function registerSubCliWithPluginCommands(
const invocation = resolveCliArgvInvocation(process.argv);
const shouldRegisterPluginCommands =
!invocation.hasHelpOrVersion &&
(invocation.commandPath.length <= 1 ||
resolveCliCommandPathPolicy(invocation.commandPath).loadPlugins !== "never");
const { registerPluginCliCommandsFromValidatedConfig } = await import("../../plugins/cli.js");
resolveCliCommandPathPolicy(invocation.commandPath).loadPlugins !== "never";
if (pluginCliPosition === "before" && shouldRegisterPluginCommands) {
const { registerPluginCliCommandsFromValidatedConfig } = await import("../../plugins/cli.js");
await registerPluginCliCommandsFromValidatedConfig(program);
}
await registerSubCli();
if (pluginCliPosition === "after" && shouldRegisterPluginCommands) {
const { registerPluginCliCommandsFromValidatedConfig } = await import("../../plugins/cli.js");
await registerPluginCliCommandsFromValidatedConfig(program);
}
}

View File

@@ -253,13 +253,13 @@ describe("registerSubCliCommands", () => {
expect(registerPluginCliCommandsFromValidatedConfig).not.toHaveBeenCalled();
});
it("keeps plugin CLI registrations available for the plugins command root", async () => {
it("does not preload plugin CLI registrations for bare plugin parent help", async () => {
process.argv = ["node", "openclaw", "plugins"];
const program = new Command().name("openclaw");
await registerSubCliByName(program, "plugins");
expect(registerPluginsCli).toHaveBeenCalledTimes(1);
expect(registerPluginCliCommandsFromValidatedConfig).toHaveBeenCalledTimes(1);
expect(registerPluginCliCommandsFromValidatedConfig).not.toHaveBeenCalled();
});
});