|
|
@@ -1,3 +1,4 @@
|
|
|
+import { execSync } from 'child_process';
|
|
|
import fs from 'fs';
|
|
|
import path from 'path';
|
|
|
|
|
|
@@ -5,6 +6,7 @@ import mongoose from 'mongoose';
|
|
|
import request from 'superagent';
|
|
|
import unzipper from 'unzipper';
|
|
|
|
|
|
+import { ActivatePluginService, GrowiPluginManifestEntries } from '~/client/services/activate-plugin';
|
|
|
import type { GrowiPlugin, GrowiPluginOrigin } from '~/interfaces/plugin';
|
|
|
import loggerFactory from '~/utils/logger';
|
|
|
import { resolveFromRoot } from '~/utils/project-dir-utils';
|
|
|
@@ -158,4 +160,39 @@ export class PluginService {
|
|
|
return [];
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Get plugin isEnabled
|
|
|
+ */
|
|
|
+ async getPluginIsEnabled(targetPluginId: string): Promise<any> {
|
|
|
+ const GrowiPlugin = await mongoose.model<GrowiPlugin>('GrowiPlugin');
|
|
|
+ const growiPlugins = await GrowiPlugin.find({ _id: targetPluginId });
|
|
|
+ return growiPlugins[0].isEnabled;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Switch plugin enabled
|
|
|
+ */
|
|
|
+ async switchPluginIsEnabled(targetPluginId: string): Promise<any> {
|
|
|
+ const GrowiPlugin = mongoose.model<GrowiPlugin>('GrowiPlugin');
|
|
|
+ const growiPlugins = await GrowiPlugin.find({ _id: targetPluginId });
|
|
|
+ await growiPlugins[0].update(
|
|
|
+ { isEnabled: !growiPlugins[0].isEnabled },
|
|
|
+ );
|
|
|
+ return growiPlugins[0].isEnabled;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Delete plugin
|
|
|
+ */
|
|
|
+ async pluginDeleted(targetPluginId: string, targetPluginName: string): Promise<any> {
|
|
|
+ const GrowiPlugin = mongoose.model<GrowiPlugin>('GrowiPlugin');
|
|
|
+ const growiPlugins = await GrowiPlugin.find({ _id: targetPluginId });
|
|
|
+ growiPlugins[0].remove();
|
|
|
+ // TODO: Check remove
|
|
|
+ const ghOrganizationName = 'weseek';
|
|
|
+ const unzipTargetPath = path.join(pluginStoringPath, ghOrganizationName);
|
|
|
+ execSync(`rm -rf ${unzipTargetPath}/${targetPluginName}`);
|
|
|
+ return [];
|
|
|
+ }
|
|
|
+
|
|
|
}
|