From b571180b8901437c609444e200494f4fefd0b449 Mon Sep 17 00:00:00 2001 From: nav Date: Thu, 16 Apr 2026 10:40:13 +0000 Subject: [PATCH] fix: register in plugins.load.paths and plugins.allow on install --- scripts/install.mjs | 49 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 45 insertions(+), 4 deletions(-) diff --git a/scripts/install.mjs b/scripts/install.mjs index 412bbce..c12d983 100644 --- a/scripts/install.mjs +++ b/scripts/install.mjs @@ -3,6 +3,7 @@ import fs from "node:fs"; import path from "node:path"; import os from "node:os"; +import { execSync } from "node:child_process"; const args = process.argv.slice(2); const mode = args.includes("--install") ? "install" : args.includes("--uninstall") ? "uninstall" : null; @@ -15,9 +16,42 @@ if (!mode) { } const repoRoot = path.resolve(import.meta.dirname, ".."); -const pluginName = "yonexus-server"; +const pluginId = "yonexus-server"; const sourceDist = path.join(repoRoot, "dist"); -const targetDir = path.join(profilePath, "plugins", pluginName); +const targetDir = path.join(profilePath, "plugins", pluginId); + +function oc(cmd) { + try { + return execSync(`openclaw ${cmd}`, { encoding: "utf8", stdio: ["pipe", "pipe", "pipe"] }).trim(); + } catch (e) { + console.error(` ⚠ openclaw ${cmd}: ${e.stderr?.trim() || e.message}`); + return null; + } +} + +function ensureInArray(configKey, value) { + const raw = oc(`config get ${configKey}`); + if (!raw) return; + const arr = JSON.parse(raw); + if (!arr.includes(value)) { + arr.push(value); + oc(`config set ${configKey} '${JSON.stringify(arr)}' --json`); + console.log(` ✓ ${configKey} includes ${value}`); + } else { + console.log(` ✓ ${configKey} already includes ${value}`); + } +} + +function removeFromArray(configKey, value) { + const raw = oc(`config get ${configKey}`); + if (!raw) return; + const arr = JSON.parse(raw); + const filtered = arr.filter(v => v !== value); + if (filtered.length !== arr.length) { + oc(`config set ${configKey} '${JSON.stringify(filtered)}' --json`); + console.log(` ✓ Removed ${value} from ${configKey}`); + } +} if (mode === "install") { if (!fs.existsSync(sourceDist)) { @@ -30,9 +64,16 @@ if (mode === "install") { fs.cpSync(sourceDist, path.join(targetDir, "dist"), { recursive: true }); fs.copyFileSync(path.join(repoRoot, "plugin", "openclaw.plugin.json"), path.join(targetDir, "openclaw.plugin.json")); fs.copyFileSync(path.join(repoRoot, "package.json"), path.join(targetDir, "package.json")); - console.log(`Installed ${pluginName} to ${targetDir}`); + console.log(` ✓ Plugin files → ${targetDir}`); + + ensureInArray("plugins.load.paths", targetDir); + ensureInArray("plugins.allow", pluginId); + console.log(`Installed ${pluginId} to ${targetDir}`); process.exit(0); } +// uninstall fs.rmSync(targetDir, { recursive: true, force: true }); -console.log(`Removed ${pluginName} from ${targetDir}`); +removeFromArray("plugins.load.paths", targetDir); +removeFromArray("plugins.allow", pluginId); +console.log(`Removed ${pluginId} from ${targetDir}`);