fix: register in plugins.load.paths and plugins.allow on install
This commit is contained in:
@@ -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}`);
|
||||
|
||||
Reference in New Issue
Block a user