mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 12:10:42 +00:00
fix: honor profile plugin install roots
This commit is contained in:
@@ -5,7 +5,7 @@ import {
|
||||
safePathSegmentHashed,
|
||||
unscopedPackageName,
|
||||
} from "../infra/install-safe-path.js";
|
||||
import { CONFIG_DIR, resolveUserPath } from "../utils.js";
|
||||
import { resolveConfigDir, resolveUserPath } from "../utils.js";
|
||||
|
||||
export function safePluginInstallFileName(input: string): string {
|
||||
return safeDirName(input);
|
||||
@@ -73,10 +73,17 @@ export function matchesExpectedPluginId(params: {
|
||||
);
|
||||
}
|
||||
|
||||
export function resolveDefaultPluginExtensionsDir(
|
||||
env: NodeJS.ProcessEnv = process.env,
|
||||
homedir?: () => string,
|
||||
): string {
|
||||
return path.join(resolveConfigDir(env, homedir), "extensions");
|
||||
}
|
||||
|
||||
export function resolvePluginInstallDir(pluginId: string, extensionsDir?: string): string {
|
||||
const extensionsBase = extensionsDir
|
||||
? resolveUserPath(extensionsDir)
|
||||
: path.join(CONFIG_DIR, "extensions");
|
||||
: resolveDefaultPluginExtensionsDir();
|
||||
const pluginIdError = validatePluginId(pluginId);
|
||||
if (pluginIdError) {
|
||||
throw new Error(pluginIdError);
|
||||
|
||||
@@ -4,10 +4,11 @@ import { packageNameMatchesId } from "../infra/install-safe-path.js";
|
||||
import { type NpmIntegrityDrift, type NpmSpecResolution } from "../infra/install-source-utils.js";
|
||||
import { resolveOpenClawPackageRootSync } from "../infra/openclaw-root.js";
|
||||
import { normalizeOptionalString } from "../shared/string-coerce.js";
|
||||
import { CONFIG_DIR, resolveUserPath } from "../utils.js";
|
||||
import { resolveUserPath } from "../utils.js";
|
||||
import {
|
||||
encodePluginInstallDirName,
|
||||
matchesExpectedPluginId,
|
||||
resolveDefaultPluginExtensionsDir,
|
||||
safePluginInstallFileName,
|
||||
validatePluginId,
|
||||
} from "./install-paths.js";
|
||||
@@ -389,7 +390,7 @@ async function resolvePluginInstallTarget(params: {
|
||||
}): Promise<{ ok: true; targetDir: string } | { ok: false; error: string }> {
|
||||
const extensionsDir = params.extensionsDir
|
||||
? resolveUserPath(params.extensionsDir)
|
||||
: path.join(CONFIG_DIR, "extensions");
|
||||
: resolveDefaultPluginExtensionsDir();
|
||||
return await params.runtime.resolveCanonicalInstallTarget({
|
||||
baseDir: extensionsDir,
|
||||
id: params.pluginId,
|
||||
@@ -874,7 +875,7 @@ export async function installPluginFromFile(params: {
|
||||
|
||||
const extensionsDir = params.extensionsDir
|
||||
? resolveUserPath(params.extensionsDir)
|
||||
: path.join(CONFIG_DIR, "extensions");
|
||||
: resolveDefaultPluginExtensionsDir();
|
||||
await fs.mkdir(extensionsDir, { recursive: true });
|
||||
|
||||
const base = path.basename(filePath, path.extname(filePath));
|
||||
|
||||
Reference in New Issue
Block a user