فهرست منبع

Merge pull request #19 from weseek/support/detect-plugin

Support/detect plugin
ffujisawa 3 سال پیش
والد
کامیت
655551de24
2فایلهای تغییر یافته به همراه5 افزوده شده و 52 حذف شده
  1. 0 31
      packages/app/src/pages/_document.page.tsx
  2. 5 21
      packages/app/src/server/service/plugin.ts

+ 0 - 31
packages/app/src/pages/_document.page.tsx

@@ -9,36 +9,6 @@ import Document, {
 import { ActivatePluginService, GrowiPluginManifestEntries } from '~/client/services/activate-plugin';
 import { GrowiPlugin, GrowiPluginResourceType } from '~/interfaces/plugin';
 
-
-// FIXME: dummy data
-// ------------------
-const growiPluginsExample: GrowiPlugin[] = [
-  {
-    isEnabled: true,
-    installedPath: 'weseek/growi-plugin-copy-code-to-clipboard',
-    origin: {
-      url: 'https://github.com/weseek/growi-plugin-copy-code-to-clipboard',
-    },
-    meta: {
-      name: 'weseek/growi-plugin-copy-code-to-clipboard',
-      types: [GrowiPluginResourceType.Script],
-    },
-  },
-  {
-    isEnabled: true,
-    installedPath: 'weseek/growi-plugin-markdown-templates',
-    origin: {
-      url: 'https://github.com/weseek/growi-plugin-markdown-templates',
-    },
-    meta: {
-      name: 'weseek/growi-plugin-markdown-templates',
-      types: [GrowiPluginResourceType.Template],
-    },
-  },
-];
-// ------------------
-
-
 type HeadersForGrowiPluginProps = {
   pluginManifestEntries: GrowiPluginManifestEntries;
 }
@@ -91,7 +61,6 @@ class GrowiDocument extends Document<GrowiDocumentProps> {
     const GrowiPlugin = mongoose.model<GrowiPlugin>('GrowiPlugin');
     const growiPlugins = await GrowiPlugin.find({ isEnabled: true });
     const pluginManifestEntries: GrowiPluginManifestEntries = await ActivatePluginService.retrievePluginManifests(growiPlugins);
-
     return { ...initialProps, pluginManifestEntries };
   }
 

+ 5 - 21
packages/app/src/server/service/plugin.ts

@@ -43,33 +43,18 @@ export class PluginService {
       console.log('downloadZipFile error', err);
     }
 
-    // TODO: detect plugins
     // save plugin metadata
     const ghRepositoryName = ghUrl.split('/').slice(-1)[0];
-    const installedPath = path.join(downloadDir, `${ghRepositoryName}-master`, 'meta.json');
-    await this.savePluginMetaData(installedPath);
+    const installedPath = path.join(downloadDir, `${ghRepositoryName}-main`);
+    const plugins = await PluginService.detectPlugins(origin, installedPath);
+    await this.savePluginMetaData(plugins);
 
     return;
   }
 
-  async savePluginMetaData(installedPath: string): Promise<void> {
-    const metaData = this.getPluginMetaData(installedPath);
+  async savePluginMetaData(plugins: GrowiPlugin[]): Promise<void> {
     const GrowiPlugin = mongoose.model('GrowiPlugin');
-
-    await GrowiPlugin.insertMany({
-      isEnabled: true,
-      installedPath,
-      meta: {
-        name: metaData.name,
-        types: metaData.types,
-        author: metaData.author,
-      },
-    });
-  }
-
-  private getPluginMetaData(installedPath: string): GrowiPluginMeta {
-    const metaDataJSON = JSON.parse(fs.readFileSync(installedPath, 'utf-8'));
-    return metaDataJSON;
+    await GrowiPlugin.insertMany(plugins);
   }
 
   // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
@@ -101,7 +86,6 @@ export class PluginService {
     if (growiPlugin.types == null) {
       throw new Error('\'growiPlugin\' section must have a \'types\' property.');
     }
-
     const plugin = {
       isEnabled: true,
       installedPath,