Files
openclaw/src/cli/root-help-metadata.ts
2026-04-26 21:11:23 -07:00

66 lines
1.7 KiB
TypeScript

import { readCliStartupMetadata } from "./startup-metadata.js";
let precomputedRootHelpText: string | null | undefined;
let precomputedBrowserHelpText: string | null | undefined;
function loadPrecomputedHelpText(
key: "rootHelpText" | "browserHelpText",
cache: string | null | undefined,
setCache: (value: string | null) => void,
): string | null {
if (cache !== undefined) {
return cache;
}
try {
const parsed = readCliStartupMetadata(import.meta.url);
if (parsed) {
const value = parsed[key];
if (typeof value === "string" && value.length > 0) {
setCache(value);
return value;
}
}
} catch {
// Fall back to live help rendering.
}
setCache(null);
return null;
}
export function loadPrecomputedRootHelpText(): string | null {
return loadPrecomputedHelpText("rootHelpText", precomputedRootHelpText, (value) => {
precomputedRootHelpText = value;
});
}
export function loadPrecomputedBrowserHelpText(): string | null {
return loadPrecomputedHelpText("browserHelpText", precomputedBrowserHelpText, (value) => {
precomputedBrowserHelpText = value;
});
}
export function outputPrecomputedRootHelpText(): boolean {
const rootHelpText = loadPrecomputedRootHelpText();
if (!rootHelpText) {
return false;
}
process.stdout.write(rootHelpText);
return true;
}
export function outputPrecomputedBrowserHelpText(): boolean {
const browserHelpText = loadPrecomputedBrowserHelpText();
if (!browserHelpText) {
return false;
}
process.stdout.write(browserHelpText);
return true;
}
export const __testing = {
resetPrecomputedRootHelpTextForTests(): void {
precomputedRootHelpText = undefined;
precomputedBrowserHelpText = undefined;
},
};