1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Check if extension is enabled in store unless it is bundled

Signed-off-by: Lauri Nevala <lauri.nevala@gmail.com>
This commit is contained in:
Lauri Nevala 2020-11-24 11:35:00 +02:00
parent 030bf91864
commit 5f1314427c

View File

@ -6,6 +6,7 @@ import path from "path";
import { getBundledExtensions } from "../common/utils/app-version";
import logger from "../main/logger";
import { extensionInstaller, PackageJson } from "./extension-installer";
import { extensionsStore } from "./extensions-store";
import type { LensExtensionId, LensExtensionManifest } from "./lens-extension";
export interface InstalledExtension {
@ -91,7 +92,7 @@ export class ExtensionDiscovery {
init() {
this.watchExtensions();
}
/**
* Watches for added/removed local extensions.
* Dependencies are installed automatically after an extension folder is copied.
@ -213,24 +214,31 @@ export class ExtensionDiscovery {
}
}
protected async getByManifest(manifestPath: string, { isBundled = false, isEnabled = isBundled }: {
protected async getByManifest(manifestPath: string, { isBundled = false }: {
isBundled?: boolean;
isEnabled?: boolean;
} = {}): Promise<InstalledExtension | null> {
let manifestJson: LensExtensionManifest;
let isEnabled: boolean;
try {
// check manifest file for existence
fs.accessSync(manifestPath, fs.constants.F_OK);
manifestJson = __non_webpack_require__(manifestPath);
const installedManifestPath = path.join(this.nodeModulesPath, manifestJson.name, "package.json");
this.packagesJson.dependencies[manifestJson.name] = path.dirname(manifestPath);
if (!isBundled) {
isEnabled = extensionsStore.isEnabled(installedManifestPath);
} else {
isEnabled = true;
}
return {
manifestPath: path.join(this.nodeModulesPath, manifestJson.name, "package.json"),
manifestPath: installedManifestPath,
manifest: manifestJson,
isBundled,
isEnabled,
isEnabled
};
} catch (error) {
logger.error(`${logModule}: can't install extension at ${manifestPath}: ${error}`, { manifestJson });
@ -316,13 +324,12 @@ export class ExtensionDiscovery {
/**
* Loads extension from absolute path, updates this.packagesJson to include it and returns the extension.
*/
async loadExtensionFromPath(absPath: string, { isBundled = false, isEnabled = isBundled }: {
async loadExtensionFromPath(absPath: string, { isBundled = false }: {
isBundled?: boolean;
isEnabled?: boolean;
} = {}): Promise<InstalledExtension | null> {
const manifestPath = path.resolve(absPath, manifestFilename);
return this.getByManifest(manifestPath, { isBundled, isEnabled });
return this.getByManifest(manifestPath, { isBundled });
}
}