activate-plugin.ts 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import { readFileSync } from 'fs';
  2. import path from 'path';
  3. import { CustomWindow } from '~/interfaces/global';
  4. import { GrowiPlugin } from '~/interfaces/plugin';
  5. import { resolveFromRoot } from '~/utils/project-dir-utils';
  6. export type GrowiPluginManifestEntries = [growiPlugin: GrowiPlugin, manifest: any][];
  7. export class ActivatePluginService {
  8. static async retrievePluginManifests(growiPlugins: GrowiPlugin[]): Promise<GrowiPluginManifestEntries> {
  9. const entries: GrowiPluginManifestEntries = [];
  10. growiPlugins.forEach(async(growiPlugin) => {
  11. const manifestPath = resolveFromRoot(path.join('tmp/plugins', growiPlugin.installedPath, 'dist/manifest.json'));
  12. const customManifestStr: string = await readFileSync(manifestPath, 'utf-8');
  13. entries.push([growiPlugin, JSON.parse(customManifestStr)]);
  14. });
  15. return entries;
  16. }
  17. static activateAll(): void {
  18. const { pluginActivators } = window as CustomWindow;
  19. if (pluginActivators == null) {
  20. return;
  21. }
  22. Object.entries(pluginActivators).forEach(([, activator]) => {
  23. activator.activate();
  24. });
  25. }
  26. }