openskynet / src /cli /cli-name.ts
Darochin's picture
Mirror OpenSkyNet workspace snapshot from Git HEAD
fc93158 verified
import path from "node:path";
export const DEFAULT_CLI_NAME = "openclaw";
export const ALT_CLI_NAME = "openskynet";
const KNOWN_CLI_NAMES = new Set([DEFAULT_CLI_NAME, ALT_CLI_NAME]);
const CLI_PREFIX_RE = /^(?:((?:pnpm|npm|bunx|npx)\s+))?(openclaw|openskynet)\b/;
export function resolveCliName(argv: string[] = process.argv): string {
if (process.env.OPENSKYNET_MODE === "1" || process.env.OPENSKYNET_STATE_DIR) {
return ALT_CLI_NAME;
}
const argv1 = argv[1];
if (!argv1) {
try {
if (process.cwd().includes("openskynet")) return ALT_CLI_NAME;
} catch {}
return DEFAULT_CLI_NAME;
}
const base = path.basename(argv1).trim();
const name = base.replace(/\.(?:mjs|[mc]?js)$/, "");
if (KNOWN_CLI_NAMES.has(name)) {
return name;
}
// Smart detection for development scripts (e.g. npx tsx test.ts)
try {
if (process.cwd().includes("openskynet") || argv1.includes("openskynet")) {
return ALT_CLI_NAME;
}
} catch {}
return DEFAULT_CLI_NAME;
}
export function replaceCliName(command: string, cliName = resolveCliName()): string {
if (!command.trim()) {
return command;
}
if (!CLI_PREFIX_RE.test(command)) {
return command;
}
return command.replace(CLI_PREFIX_RE, (_match, runner: string | undefined) => {
return `${runner ?? ""}${cliName}`;
});
}
export function resolveCliDisplayName(argv: string[] = process.argv): string {
return resolveCliName(argv) === ALT_CLI_NAME ? "OpenSkynet" : "OpenClaw";
}