From ecd5cbe76a2d66755ed3c7ac0107c4a2c5ff06f4 Mon Sep 17 00:00:00 2001 From: Jari Kolehmainen Date: Mon, 5 Oct 2020 15:03:46 +0300 Subject: [PATCH] remove extension-store for now Signed-off-by: Jari Kolehmainen --- src/extensions/extension-loader.ts | 11 ++-- src/extensions/extension-manager.ts | 7 +-- src/extensions/extension-store.ts | 58 ------------------- src/extensions/lens-extension.ts | 11 +++- .../+extensions/extensions.route.ts | 11 ---- .../components/+extensions/extensions.scss | 4 -- .../components/+extensions/extensions.tsx | 31 ---------- src/renderer/components/+extensions/index.ts | 2 - .../cluster-manager/cluster-manager.tsx | 2 - 9 files changed, 18 insertions(+), 119 deletions(-) delete mode 100644 src/extensions/extension-store.ts delete mode 100644 src/renderer/components/+extensions/extensions.route.ts delete mode 100644 src/renderer/components/+extensions/extensions.scss delete mode 100644 src/renderer/components/+extensions/extensions.tsx delete mode 100644 src/renderer/components/+extensions/index.ts diff --git a/src/extensions/extension-loader.ts b/src/extensions/extension-loader.ts index d62a9af807..d34ecd4eb6 100644 --- a/src/extensions/extension-loader.ts +++ b/src/extensions/extension-loader.ts @@ -1,7 +1,6 @@ -import type { ExtensionId, LensExtension, ExtensionManifest } from "./lens-extension" +import type { ExtensionId, LensExtension, ExtensionManifest, ExtensionModel } from "./lens-extension" import { broadcastIpc } from "../common/ipc" import type { LensRuntimeRendererEnv } from "./lens-runtime" -import { ExtensionModel } from "./extension-store" import path from "path" import { observable, reaction, toJS, } from "mobx" import logger from "../main/logger" @@ -20,7 +19,7 @@ export function extensionPackagesRoot() { export function withExtensionPackagesRoot(callback: Function) { const cwd = process.cwd() try { - process.chdir(path.resolve(extensionPackagesRoot())) + process.chdir(extensionPackagesRoot()) return callback() } finally { process.chdir(cwd) @@ -44,14 +43,14 @@ export class ExtensionLoader { } autoEnableOnLoad(getLensRuntimeEnv: () => LensRuntimeRendererEnv, { delay = 0 } = {}) { - logger.info('[EXTENSIONS-MANAGER]: auto-activation loaded extensions: ON'); + logger.info('[EXTENSIONS-LOADER]: auto-activation loaded extensions: ON'); return reaction(() => this.extensions.toJS(), installedExtensions => { installedExtensions.forEach((ext) => { let instance = this.instances.get(ext.manifestPath) if (!instance) { const extensionModule = this.requireExtension(ext) if (!extensionModule) { - logger.error("[EXTENSION-MANAGER] failed to load extension " + ext.manifestPath) + logger.error("[EXTENSION-LOADER] failed to load extension " + ext.manifestPath) return } const LensExtensionClass = extensionModule.default; @@ -72,7 +71,7 @@ export class ExtensionLoader { const extMain = path.join(path.dirname(extension.manifestPath), extension.manifest.main) return __non_webpack_require__(extMain) } catch (err) { - console.error(`[EXTENSION-MANAGER]: can't load extension main at ${extension.manifestPath}: ${err}`, { extension }); + console.error(`[EXTENSION-LOADER]: can't load extension main at ${extension.manifestPath}: ${err}`, { extension }); } }) } diff --git a/src/extensions/extension-manager.ts b/src/extensions/extension-manager.ts index 641fb70cf3..2f856ef8cc 100644 --- a/src/extensions/extension-manager.ts +++ b/src/extensions/extension-manager.ts @@ -17,15 +17,14 @@ export class ExtensionManager { async load() { logger.info("[EXTENSION-MANAGER] loading extensions from " + this.extensionPackagesRoot) - fs.ensureDir(path.join(this.extensionPackagesRoot, "node_modules")) - fs.writeFileSync(path.join(this.extensionPackagesRoot, "package.json"), `{"dependencies": []}`, {mode: 0o600}) + await fs.ensureDir(path.join(this.extensionPackagesRoot, "node_modules")) + await fs.writeFile(path.join(this.extensionPackagesRoot, "package.json"), `{"dependencies": []}`, {mode: 0o600}) return await this.loadExtensions(); } async getExtensionByManifest(manifestPath: string): Promise { let manifestJson: ExtensionManifest; - let mainJs: string; try { manifestJson = __non_webpack_require__(manifestPath) withExtensionPackagesRoot(() => { @@ -41,7 +40,7 @@ export class ExtensionManager { manifest: manifestJson } } catch (err) { - logger.error(`[EXTENSION-MANAGER]: can't install extension at ${manifestPath}: ${err}`, { manifestJson, mainJs }); + logger.error(`[EXTENSION-MANAGER]: can't install extension at ${manifestPath}: ${err}`, { manifestJson }); } } diff --git a/src/extensions/extension-store.ts b/src/extensions/extension-store.ts deleted file mode 100644 index ced4842d28..0000000000 --- a/src/extensions/extension-store.ts +++ /dev/null @@ -1,58 +0,0 @@ -import type { ExtensionId, ExtensionManifest, ExtensionVersion, LensExtension } from "./lens-extension"; -import { observable, toJS, } from "mobx"; -import { BaseStore } from "../common/base-store"; - -export interface ExtensionStoreModel { - extensions: [ExtensionId, ExtensionModel][] -} - -export interface ExtensionModel { - id: ExtensionId; - version: ExtensionVersion; - name: string; - manifestPath: string; - description?: string; - enabled?: boolean; - updateUrl?: string; -} - -export interface InstalledExtension { - manifestPath: string; - manifest: ExtensionManifest; - extensionModule: { - [name: string]: any; - default: new (model: ExtensionModel, manifest?: ExtensionManifest) => LensExtension - } -} - -export class ExtensionStore extends BaseStore { - private constructor() { - super({ - configName: "lens-extension-store", - }); - } - - @observable extensions = observable.map(); - - getById(id: ExtensionId): LensExtension { - return this.extensions.get(id); - } - - async removeById(id: ExtensionId) { - const extension = this.getById(id); - if (extension) { - await extension.uninstall(); - this.extensions.delete(id); - } - } - - toJSON(): ExtensionStoreModel { - return toJS({ - extensions: Array.from(this.extensions).map(([id, instance]) => [id, instance.toJSON()]), - }, { - recurseEverything: true, - }) - } -} - -export const extensionStore = ExtensionStore.getInstance() diff --git a/src/extensions/lens-extension.ts b/src/extensions/lens-extension.ts index 9f33858f00..9fc766f7a9 100644 --- a/src/extensions/lens-extension.ts +++ b/src/extensions/lens-extension.ts @@ -1,4 +1,3 @@ -import type { ExtensionModel } from "./extension-store"; import type { LensRuntimeRendererEnv } from "./lens-runtime"; import type { PageRegistration } from "./register-page"; import { readJsonSync } from "fs-extra"; @@ -9,6 +8,16 @@ export type ExtensionId = string | ExtensionPackageJsonPath; export type ExtensionPackageJsonPath = string; export type ExtensionVersion = string | number; +export interface ExtensionModel { + id: ExtensionId; + version: ExtensionVersion; + name: string; + manifestPath: string; + description?: string; + enabled?: boolean; + updateUrl?: string; +} + export interface ExtensionManifest extends ExtensionModel { main: string; description?: string; // todo: add more fields similar to package.json + some extra diff --git a/src/renderer/components/+extensions/extensions.route.ts b/src/renderer/components/+extensions/extensions.route.ts deleted file mode 100644 index 5744aabb0e..0000000000 --- a/src/renderer/components/+extensions/extensions.route.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { RouteProps } from "react-router"; -import { buildURL } from "../../navigation"; - -export const extensionsRoute: RouteProps = { - path: "/extensions" -} - -export interface IExtensionsRouteParams { -} - -export const extensionsURL = buildURL(extensionsRoute.path); diff --git a/src/renderer/components/+extensions/extensions.scss b/src/renderer/components/+extensions/extensions.scss deleted file mode 100644 index 496b03c161..0000000000 --- a/src/renderer/components/+extensions/extensions.scss +++ /dev/null @@ -1,4 +0,0 @@ -.Extensions { - $spacing: $padding * 2; - padding: $spacing; -} \ No newline at end of file diff --git a/src/renderer/components/+extensions/extensions.tsx b/src/renderer/components/+extensions/extensions.tsx deleted file mode 100644 index 0dd9bf2299..0000000000 --- a/src/renderer/components/+extensions/extensions.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import "./extensions.scss" -import React from "react"; -import { observer } from "mobx-react"; -import { extensionStore } from "../../../extensions/extension-store"; -import { WizardLayout } from "../layout/wizard-layout"; -import { Icon } from "../icon"; - -@observer -export class Extensions extends React.Component { - // todo: add input-select to customize extensions loading folder(s) - renderInfoPanel() { - return ( -
- -

Extensions available to install

-
- ); - } - - render() { - const { extensions } = extensionStore; - return ( - -

Extensions

-
-          {JSON.stringify(extensions.toJSON(), null, 2)}
-        
-
- ); - } -} diff --git a/src/renderer/components/+extensions/index.ts b/src/renderer/components/+extensions/index.ts deleted file mode 100644 index 8946a5f6fe..0000000000 --- a/src/renderer/components/+extensions/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./extensions.route" -export * from "./extensions" diff --git a/src/renderer/components/cluster-manager/cluster-manager.tsx b/src/renderer/components/cluster-manager/cluster-manager.tsx index 5c831cce02..cd3af5391c 100644 --- a/src/renderer/components/cluster-manager/cluster-manager.tsx +++ b/src/renderer/components/cluster-manager/cluster-manager.tsx @@ -11,7 +11,6 @@ import { Workspaces, workspacesRoute } from "../+workspaces"; import { AddCluster, addClusterRoute } from "../+add-cluster"; import { ClusterView } from "./cluster-view"; import { ClusterSettings, clusterSettingsRoute } from "../+cluster-settings"; -import { Extensions, extensionsRoute } from "../+extensions"; import { clusterViewRoute, clusterViewURL, getMatchedCluster, getMatchedClusterId } from "./cluster-view.route"; import { clusterStore } from "../../../common/cluster-store"; import { hasLoadedView, initView, lensViews, refreshViews } from "./lens-views"; @@ -64,7 +63,6 @@ export class ClusterManager extends React.Component { - {dynamicPages.globalPages.map(({ path, components: { Page } }) => { return })}