支持插件开发者模式

This commit is contained in:
muwoo
2021-12-09 11:46:06 +08:00
parent fc7e3e91bd
commit b3a00c88ad
19 changed files with 264 additions and 88 deletions

View File

@@ -1,21 +1,36 @@
import path from "path";
import fs from "fs";
import getLocalDataFile from "./getLocalDataFile";
import { app } from "electron";
import { PluginHandler } from "@/core";
import { PLUGIN_INSTALL_DIR as baseDir } from "@/common/constans/main";
const configPath = path.join(getLocalDataFile(), "./rubick-local-plugin.json");
const appPath = app.getPath("cache");
const baseDir = path.join(appPath, "./rubick-plugins");
const pluginInstance = new PluginHandler({
baseDir: baseDir,
baseDir,
});
global.LOCAL_PLUGINS = {
PLUGINS: [],
async downloadPlugin(plugin) {
await pluginInstance.install([plugin.name]);
console.log(plugin);
await pluginInstance.install([plugin.name], { isDev: plugin.isDev });
if (plugin.isDev) {
// 获取 dev 插件信息
const pluginPath = path.resolve(
baseDir,
"node_modules",
plugin.name
);
const pluginInfo = JSON.parse(
fs.readFileSync(path.join(pluginPath, "./package.json"), "utf8")
);
plugin = {
...plugin,
...pluginInfo,
};
}
console.log(plugin);
global.LOCAL_PLUGINS.addPlugin(plugin);
return global.LOCAL_PLUGINS.PLUGINS;
},
@@ -60,7 +75,7 @@ global.LOCAL_PLUGINS = {
fs.writeFileSync(configPath, JSON.stringify(global.LOCAL_PLUGINS.PLUGINS));
},
async deletePlugin(plugin) {
await pluginInstance.uninstall([plugin.name]);
await pluginInstance.uninstall([plugin.name], { isDev: plugin.isDev });
global.LOCAL_PLUGINS.PLUGINS = global.LOCAL_PLUGINS.PLUGINS.filter((p) => plugin.name !== p.name);
fs.writeFileSync(configPath, JSON.stringify(global.LOCAL_PLUGINS.PLUGINS));
return global.LOCAL_PLUGINS.PLUGINS;