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

Install all extensions via package.json (#6214)

This commit is contained in:
Jari Kolehmainen 2022-09-09 16:15:28 +03:00 committed by GitHub
parent c9b1849314
commit 2d6239123b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 23 deletions

View File

@ -390,28 +390,11 @@ export class ExtensionDiscovery {
async ensureExtensions(): Promise<Map<LensExtensionId, InstalledExtension>> {
const bundledExtensions = await this.loadBundledExtensions();
await this.installBundledPackages(this.packageJsonPath, bundledExtensions);
const userExtensions = await this.loadFromFolder(this.localFolderPath, bundledExtensions.map((extension) => extension.manifest.name));
for (const extension of userExtensions) {
if (!(await this.dependencies.pathExists(extension.manifestPath))) {
try {
await this.dependencies.installExtension(extension.absolutePath);
} catch (error) {
const message = error instanceof Error
? error.message
: String(error || "unknown error");
const { name, version } = extension.manifest;
this.dependencies.logger.error(`${logModule}: failed to install user extension ${name}@${version}: ${message}`);
}
}
}
const extensions = bundledExtensions.concat(userExtensions);
await this.installBundledPackages(this.packageJsonPath, extensions);
return this.extensions = new Map(extensions.map(extension => [extension.id, extension]));
}
@ -420,10 +403,13 @@ export class ExtensionDiscovery {
*/
installBundledPackages(packageJsonPath: string, extensions: InstalledExtension[]): Promise<void> {
const dependencies = Object.fromEntries(
extensions.map(extension => [extension.manifest.name, extension.absolutePath]),
extensions.filter(extension => extension.isBundled).map(extension => [extension.manifest.name, extension.absolutePath]),
);
const optionalDependencies = Object.fromEntries(
extensions.filter(extension => !extension.isBundled).map(extension => [extension.manifest.name, extension.absolutePath]),
);
return this.dependencies.installExtensions(packageJsonPath, { dependencies });
return this.dependencies.installExtensions(packageJsonPath, { dependencies, optionalDependencies });
}
async loadBundledExtensions(): Promise<InstalledExtension[]> {

View File

@ -42,7 +42,7 @@ export class ExtensionInstaller {
});
logger.info(`${logModule} installing dependencies at ${this.dependencies.extensionPackageRootDirectory}`);
await this.npm(["install", "--no-audit", "--only=prod", "--prefer-offline", "--no-package-lock"]);
await this.npm(["install", "--audit=false", "--fund=false", "--only=prod", "--prefer-offline"]);
logger.info(`${logModule} dependencies installed at ${this.dependencies.extensionPackageRootDirectory}`);
} finally {
this.installLock.release();
@ -58,7 +58,7 @@ export class ExtensionInstaller {
try {
logger.info(`${logModule} installing package from ${name} to ${this.dependencies.extensionPackageRootDirectory}`);
await this.npm(["install", "--no-audit", "--only=prod", "--package-lock=false", "--prefer-offline", "--no-package-lock", name]);
await this.npm(["install", "--audit=false", "--fund=false", "--only=prod", "--prefer-offline", name]);
logger.info(`${logModule} package ${name} installed to ${this.dependencies.extensionPackageRootDirectory}`);
} finally {
this.installLock.release();