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:
parent
c9b1849314
commit
2d6239123b
@ -390,28 +390,11 @@ export class ExtensionDiscovery {
|
|||||||
|
|
||||||
async ensureExtensions(): Promise<Map<LensExtensionId, InstalledExtension>> {
|
async ensureExtensions(): Promise<Map<LensExtensionId, InstalledExtension>> {
|
||||||
const bundledExtensions = await this.loadBundledExtensions();
|
const bundledExtensions = await this.loadBundledExtensions();
|
||||||
|
|
||||||
await this.installBundledPackages(this.packageJsonPath, bundledExtensions);
|
|
||||||
|
|
||||||
const userExtensions = await this.loadFromFolder(this.localFolderPath, bundledExtensions.map((extension) => extension.manifest.name));
|
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);
|
const extensions = bundledExtensions.concat(userExtensions);
|
||||||
|
|
||||||
|
await this.installBundledPackages(this.packageJsonPath, extensions);
|
||||||
|
|
||||||
return this.extensions = new Map(extensions.map(extension => [extension.id, extension]));
|
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> {
|
installBundledPackages(packageJsonPath: string, extensions: InstalledExtension[]): Promise<void> {
|
||||||
const dependencies = Object.fromEntries(
|
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[]> {
|
async loadBundledExtensions(): Promise<InstalledExtension[]> {
|
||||||
|
|||||||
@ -42,7 +42,7 @@ export class ExtensionInstaller {
|
|||||||
});
|
});
|
||||||
|
|
||||||
logger.info(`${logModule} installing dependencies at ${this.dependencies.extensionPackageRootDirectory}`);
|
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}`);
|
logger.info(`${logModule} dependencies installed at ${this.dependencies.extensionPackageRootDirectory}`);
|
||||||
} finally {
|
} finally {
|
||||||
this.installLock.release();
|
this.installLock.release();
|
||||||
@ -58,7 +58,7 @@ export class ExtensionInstaller {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
logger.info(`${logModule} installing package from ${name} to ${this.dependencies.extensionPackageRootDirectory}`);
|
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}`);
|
logger.info(`${logModule} package ${name} installed to ${this.dependencies.extensionPackageRootDirectory}`);
|
||||||
} finally {
|
} finally {
|
||||||
this.installLock.release();
|
this.installLock.release();
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user