mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Assume that bundled extensions are always compatible (#6195)
Signed-off-by: Sebastian Malton <sebastian@malton.name> Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
parent
7a0b84c791
commit
100bd870d7
@ -6,7 +6,6 @@ import { getInjectable } from "@ogre-tools/injectable";
|
|||||||
import { ExtensionDiscovery } from "./extension-discovery";
|
import { ExtensionDiscovery } from "./extension-discovery";
|
||||||
import extensionLoaderInjectable from "../extension-loader/extension-loader.injectable";
|
import extensionLoaderInjectable from "../extension-loader/extension-loader.injectable";
|
||||||
import isCompatibleExtensionInjectable from "./is-compatible-extension/is-compatible-extension.injectable";
|
import isCompatibleExtensionInjectable from "./is-compatible-extension/is-compatible-extension.injectable";
|
||||||
import isCompatibleBundledExtensionInjectable from "./is-compatible-bundled-extension/is-compatible-bundled-extension.injectable";
|
|
||||||
import extensionsStoreInjectable from "../extensions-store/extensions-store.injectable";
|
import extensionsStoreInjectable from "../extensions-store/extensions-store.injectable";
|
||||||
import extensionInstallationStateStoreInjectable from "../extension-installation-state-store/extension-installation-state-store.injectable";
|
import extensionInstallationStateStoreInjectable from "../extension-installation-state-store/extension-installation-state-store.injectable";
|
||||||
import installExtensionInjectable from "../extension-installer/install-extension/install-extension.injectable";
|
import installExtensionInjectable from "../extension-installer/install-extension/install-extension.injectable";
|
||||||
@ -25,24 +24,11 @@ const extensionDiscoveryInjectable = getInjectable({
|
|||||||
new ExtensionDiscovery({
|
new ExtensionDiscovery({
|
||||||
extensionLoader: di.inject(extensionLoaderInjectable),
|
extensionLoader: di.inject(extensionLoaderInjectable),
|
||||||
extensionsStore: di.inject(extensionsStoreInjectable),
|
extensionsStore: di.inject(extensionsStoreInjectable),
|
||||||
|
extensionInstallationStateStore: di.inject(extensionInstallationStateStoreInjectable),
|
||||||
extensionInstallationStateStore: di.inject(
|
|
||||||
extensionInstallationStateStoreInjectable,
|
|
||||||
),
|
|
||||||
|
|
||||||
isCompatibleBundledExtension: di.inject(
|
|
||||||
isCompatibleBundledExtensionInjectable,
|
|
||||||
),
|
|
||||||
|
|
||||||
isCompatibleExtension: di.inject(isCompatibleExtensionInjectable),
|
isCompatibleExtension: di.inject(isCompatibleExtensionInjectable),
|
||||||
|
|
||||||
installExtension: di.inject(installExtensionInjectable),
|
installExtension: di.inject(installExtensionInjectable),
|
||||||
installExtensions: di.inject(installExtensionsInjectable),
|
installExtensions: di.inject(installExtensionsInjectable),
|
||||||
|
extensionPackageRootDirectory: di.inject(extensionPackageRootDirectoryInjectable),
|
||||||
extensionPackageRootDirectory: di.inject(
|
|
||||||
extensionPackageRootDirectoryInjectable,
|
|
||||||
),
|
|
||||||
|
|
||||||
staticFilesDirectory: di.inject(staticFilesDirectoryInjectable),
|
staticFilesDirectory: di.inject(staticFilesDirectoryInjectable),
|
||||||
readJsonFile: di.inject(readJsonFileInjectable),
|
readJsonFile: di.inject(readJsonFileInjectable),
|
||||||
pathExists: di.inject(pathExistsInjectable),
|
pathExists: di.inject(pathExistsInjectable),
|
||||||
|
|||||||
@ -27,12 +27,8 @@ import type { Watch } from "../../common/fs/watch/watch.injectable";
|
|||||||
interface Dependencies {
|
interface Dependencies {
|
||||||
extensionLoader: ExtensionLoader;
|
extensionLoader: ExtensionLoader;
|
||||||
extensionsStore: ExtensionsStore;
|
extensionsStore: ExtensionsStore;
|
||||||
|
|
||||||
extensionInstallationStateStore: ExtensionInstallationStateStore;
|
extensionInstallationStateStore: ExtensionInstallationStateStore;
|
||||||
|
|
||||||
isCompatibleBundledExtension: (manifest: LensExtensionManifest) => boolean;
|
|
||||||
isCompatibleExtension: (manifest: LensExtensionManifest) => boolean;
|
isCompatibleExtension: (manifest: LensExtensionManifest) => boolean;
|
||||||
|
|
||||||
installExtension: (name: string) => Promise<void>;
|
installExtension: (name: string) => Promise<void>;
|
||||||
installExtensions: (packageJsonPath: string, packagesJson: PackageJson) => Promise<void>;
|
installExtensions: (packageJsonPath: string, packagesJson: PackageJson) => Promise<void>;
|
||||||
extensionPackageRootDirectory: string;
|
extensionPackageRootDirectory: string;
|
||||||
@ -102,7 +98,7 @@ export class ExtensionDiscovery {
|
|||||||
|
|
||||||
public events = new EventEmitter();
|
public events = new EventEmitter();
|
||||||
|
|
||||||
constructor(protected dependencies : Dependencies) {
|
constructor(protected readonly dependencies: Dependencies) {
|
||||||
makeObservable(this);
|
makeObservable(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -369,7 +365,7 @@ export class ExtensionDiscovery {
|
|||||||
const extensionDir = path.dirname(manifestPath);
|
const extensionDir = path.dirname(manifestPath);
|
||||||
const npmPackage = path.join(extensionDir, `${manifest.name}-${manifest.version}.tgz`);
|
const npmPackage = path.join(extensionDir, `${manifest.name}-${manifest.version}.tgz`);
|
||||||
const absolutePath = (isProduction && await this.dependencies.pathExists(npmPackage)) ? npmPackage : extensionDir;
|
const absolutePath = (isProduction && await this.dependencies.pathExists(npmPackage)) ? npmPackage : extensionDir;
|
||||||
const isCompatible = (isBundled && this.dependencies.isCompatibleBundledExtension(manifest)) || this.dependencies.isCompatibleExtension(manifest);
|
const isCompatible = isBundled || this.dependencies.isCompatibleExtension(manifest);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id,
|
id,
|
||||||
|
|||||||
@ -1,16 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
||||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
||||||
*/
|
|
||||||
import { getInjectable } from "@ogre-tools/injectable";
|
|
||||||
import appSemanticVersionInjectable from "../../../common/vars/app-semantic-version.injectable";
|
|
||||||
import { isCompatibleBundledExtension } from "./is-compatible-bundled-extension";
|
|
||||||
|
|
||||||
const isCompatibleBundledExtensionInjectable = getInjectable({
|
|
||||||
id: "is-compatible-bundled-extension",
|
|
||||||
instantiate: (di) => isCompatibleBundledExtension({
|
|
||||||
appSemVer: di.inject(appSemanticVersionInjectable),
|
|
||||||
}),
|
|
||||||
});
|
|
||||||
|
|
||||||
export default isCompatibleBundledExtensionInjectable;
|
|
||||||
@ -1,16 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
||||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
||||||
*/
|
|
||||||
import type { LensExtensionManifest } from "../../lens-extension";
|
|
||||||
import { isProduction } from "../../../common/vars";
|
|
||||||
import type { SemVer } from "semver";
|
|
||||||
|
|
||||||
interface Dependencies {
|
|
||||||
appSemVer: SemVer;
|
|
||||||
}
|
|
||||||
|
|
||||||
export const isCompatibleBundledExtension =
|
|
||||||
({ appSemVer }: Dependencies) =>
|
|
||||||
(manifest: LensExtensionManifest): boolean =>
|
|
||||||
!isProduction || manifest.version === appSemVer.raw;
|
|
||||||
Loading…
Reference in New Issue
Block a user