mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-30 11:21:07 +00:00
feat(cli): support targeting running containerized openclaw instances (#52651)
Signed-off-by: sallyom <somalley@redhat.com>
This commit is contained in:
@@ -2,8 +2,11 @@ import { replaceCliName, resolveCliName } from "./cli-name.js";
|
||||
import { normalizeProfileName } from "./profile-utils.js";
|
||||
|
||||
const CLI_PREFIX_RE = /^(?:pnpm|npm|bunx|npx)\s+openclaw\b|^openclaw\b/;
|
||||
const CONTAINER_FLAG_RE = /(?:^|\s)--container(?:\s|=|$)/;
|
||||
const PROFILE_FLAG_RE = /(?:^|\s)--profile(?:\s|=|$)/;
|
||||
const DEV_FLAG_RE = /(?:^|\s)--dev(?:\s|$)/;
|
||||
const UPDATE_COMMAND_RE =
|
||||
/^(?:pnpm|npm|bunx|npx)\s+openclaw\b.*(?:^|\s)update(?:\s|$)|^openclaw\b.*(?:^|\s)update(?:\s|$)/;
|
||||
|
||||
export function formatCliCommand(
|
||||
command: string,
|
||||
@@ -11,15 +14,32 @@ export function formatCliCommand(
|
||||
): string {
|
||||
const cliName = resolveCliName();
|
||||
const normalizedCommand = replaceCliName(command, cliName);
|
||||
const container = env.OPENCLAW_CONTAINER_HINT?.trim();
|
||||
const profile = normalizeProfileName(env.OPENCLAW_PROFILE);
|
||||
if (!profile) {
|
||||
if (!container && !profile) {
|
||||
return normalizedCommand;
|
||||
}
|
||||
if (!CLI_PREFIX_RE.test(normalizedCommand)) {
|
||||
return normalizedCommand;
|
||||
}
|
||||
if (PROFILE_FLAG_RE.test(normalizedCommand) || DEV_FLAG_RE.test(normalizedCommand)) {
|
||||
const additions: string[] = [];
|
||||
if (
|
||||
container &&
|
||||
!CONTAINER_FLAG_RE.test(normalizedCommand) &&
|
||||
!UPDATE_COMMAND_RE.test(normalizedCommand)
|
||||
) {
|
||||
additions.push(`--container ${container}`);
|
||||
}
|
||||
if (
|
||||
!container &&
|
||||
profile &&
|
||||
!PROFILE_FLAG_RE.test(normalizedCommand) &&
|
||||
!DEV_FLAG_RE.test(normalizedCommand)
|
||||
) {
|
||||
additions.push(`--profile ${profile}`);
|
||||
}
|
||||
if (additions.length === 0) {
|
||||
return normalizedCommand;
|
||||
}
|
||||
return normalizedCommand.replace(CLI_PREFIX_RE, (match) => `${match} --profile ${profile}`);
|
||||
return normalizedCommand.replace(CLI_PREFIX_RE, (match) => `${match} ${additions.join(" ")}`);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user