mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-15 22:03:18 +02:00
Merged via squash.
Prepared head SHA: c8da48f689
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
60 lines
1.9 KiB
TypeScript
60 lines
1.9 KiB
TypeScript
import { Command } from "commander";
|
|
import { getPluginCliCommandDescriptors } from "../../plugins/cli.js";
|
|
import { VERSION } from "../../version.js";
|
|
import { getCoreCliCommandDescriptors } from "./core-command-descriptors.js";
|
|
import { configureProgramHelp } from "./help.js";
|
|
import { getSubCliEntries } from "./subcli-descriptors.js";
|
|
|
|
async function buildRootHelpProgram(): Promise<Command> {
|
|
const program = new Command();
|
|
configureProgramHelp(program, {
|
|
programVersion: VERSION,
|
|
channelOptions: [],
|
|
messageChannelOptions: "",
|
|
agentChannelOptions: "",
|
|
});
|
|
|
|
const existingCommands = new Set<string>();
|
|
for (const command of getCoreCliCommandDescriptors()) {
|
|
program.command(command.name).description(command.description);
|
|
existingCommands.add(command.name);
|
|
}
|
|
for (const command of getSubCliEntries()) {
|
|
if (existingCommands.has(command.name)) {
|
|
continue;
|
|
}
|
|
program.command(command.name).description(command.description);
|
|
existingCommands.add(command.name);
|
|
}
|
|
for (const command of await getPluginCliCommandDescriptors()) {
|
|
if (existingCommands.has(command.name)) {
|
|
continue;
|
|
}
|
|
program.command(command.name).description(command.description);
|
|
existingCommands.add(command.name);
|
|
}
|
|
|
|
return program;
|
|
}
|
|
|
|
export async function renderRootHelpText(): Promise<string> {
|
|
const program = await buildRootHelpProgram();
|
|
let output = "";
|
|
const originalWrite = process.stdout.write.bind(process.stdout);
|
|
const captureWrite: typeof process.stdout.write = ((chunk: string | Uint8Array) => {
|
|
output += String(chunk);
|
|
return true;
|
|
}) as typeof process.stdout.write;
|
|
process.stdout.write = captureWrite;
|
|
try {
|
|
program.outputHelp();
|
|
} finally {
|
|
process.stdout.write = originalWrite;
|
|
}
|
|
return output;
|
|
}
|
|
|
|
export async function outputRootHelp(): Promise<void> {
|
|
process.stdout.write(await renderRootHelpText());
|
|
}
|