diff --git a/scripts/write-cli-startup-metadata.ts b/scripts/write-cli-startup-metadata.ts index 8cf20de148b..36b3ff1c0e0 100644 --- a/scripts/write-cli-startup-metadata.ts +++ b/scripts/write-cli-startup-metadata.ts @@ -316,6 +316,9 @@ export async function writeCliStartupMetadata(options?: { distDir?: string; outputPath?: string; extensionsDir?: string; + renderBundledRootHelpText?: typeof renderBundledRootHelpText; + renderSourceRootHelpText?: typeof renderSourceRootHelpText; + renderSourceBrowserHelpText?: typeof renderSourceBrowserHelpText; }): Promise { const resolvedDistDir = options?.distDir ?? distDir; const resolvedOutputPath = options?.outputPath ?? outputPath; @@ -352,11 +355,16 @@ export async function writeCliStartupMetadata(options?: { let rootHelpText: string; try { - rootHelpText = await renderBundledRootHelpText(resolvedDistDir, renderContext); + rootHelpText = await (options?.renderBundledRootHelpText ?? renderBundledRootHelpText)( + resolvedDistDir, + renderContext, + ); } catch { - rootHelpText = renderSourceRootHelpText(renderContext); + rootHelpText = (options?.renderSourceRootHelpText ?? renderSourceRootHelpText)(renderContext); } - const browserHelpText = renderSourceBrowserHelpText(renderContext); + const browserHelpText = (options?.renderSourceBrowserHelpText ?? renderSourceBrowserHelpText)( + renderContext, + ); mkdirSync(resolvedDistDir, { recursive: true }); writeFileSync( diff --git a/test/scripts/write-cli-startup-metadata.test.ts b/test/scripts/write-cli-startup-metadata.test.ts index 4043b4d4432..54b8d862f73 100644 --- a/test/scripts/write-cli-startup-metadata.test.ts +++ b/test/scripts/write-cli-startup-metadata.test.ts @@ -29,7 +29,16 @@ describe("write-cli-startup-metadata", () => { "utf8", ); - await writeCliStartupMetadata({ distDir, outputPath, extensionsDir }); + await writeCliStartupMetadata({ + distDir, + outputPath, + extensionsDir, + renderBundledRootHelpText: async () => { + throw new Error("dist root help unavailable"); + }, + renderSourceRootHelpText: () => "Usage: openclaw\n", + renderSourceBrowserHelpText: () => "Usage: openclaw browser\n", + }); const written = JSON.parse(readFileSync(outputPath, "utf8")) as { browserHelpText: string;