mirror of
https://github.com/rubickCenter/rubick
synced 2025-12-26 12:42:34 +08:00
✨ 支持插件开发者模式
This commit is contained in:
@@ -1,5 +0,0 @@
|
||||
const APP_FINDER_PATH = process.platform === 'darwin' ? ['/System/Applications', '/Applications', '/System/Library/PreferencePanes'] : []
|
||||
|
||||
export {
|
||||
APP_FINDER_PATH
|
||||
}
|
||||
8
src/common/constans/main.ts
Normal file
8
src/common/constans/main.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
import { app } from "electron";
|
||||
import path from "path";
|
||||
|
||||
const appPath = app.getPath("cache");
|
||||
|
||||
const PLUGIN_INSTALL_DIR = path.join(appPath, "./rubick-plugins");
|
||||
|
||||
export { PLUGIN_INSTALL_DIR };
|
||||
8
src/common/constans/renderer.ts
Normal file
8
src/common/constans/renderer.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
import { remote } from "electron";
|
||||
import path from "path";
|
||||
|
||||
const appPath = remote.app.getPath("cache");
|
||||
|
||||
const PLUGIN_INSTALL_DIR = path.join(appPath, "./rubick-plugins");
|
||||
|
||||
export { PLUGIN_INSTALL_DIR };
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user