mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Display error dialog if extensions couldn't be loaded
Signed-off-by: Panu Horsmalahti <phorsmalahti@mirantis.com>
This commit is contained in:
parent
b33629d24f
commit
d8bdfa5240
@ -266,18 +266,30 @@ export class ExtensionDiscovery {
|
|||||||
|
|
||||||
logger.info(`${logModule} loading extensions from ${extensionInstaller.extensionPackagesRoot}`);
|
logger.info(`${logModule} loading extensions from ${extensionInstaller.extensionPackagesRoot}`);
|
||||||
|
|
||||||
if (fs.existsSync(path.join(extensionInstaller.extensionPackagesRoot, "package-lock.json"))) {
|
if (await fs.pathExists(path.join(extensionInstaller.extensionPackagesRoot, "package-lock.json"))) {
|
||||||
await fs.remove(path.join(extensionInstaller.extensionPackagesRoot, "package-lock.json"));
|
await fs.remove(path.join(extensionInstaller.extensionPackagesRoot, "package-lock.json"));
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
// Verify write access to static/extensions, which is needed for symlinking
|
||||||
await fs.access(this.inTreeFolderPath, fs.constants.W_OK);
|
await fs.access(this.inTreeFolderPath, fs.constants.W_OK);
|
||||||
|
|
||||||
|
// Set bundled folder path to static/extensions
|
||||||
this.bundledFolderPath = this.inTreeFolderPath;
|
this.bundledFolderPath = this.inTreeFolderPath;
|
||||||
} catch {
|
} catch {
|
||||||
// we need to copy in-tree extensions so that we can symlink them properly on "npm install"
|
// If there is error accessing static/extensions, we need to copy in-tree extensions so that we can symlink them properly on "npm install".
|
||||||
|
// The error can happen if there is read-only rights to static/extensions, which would fail symlinking.
|
||||||
|
|
||||||
|
// Remove e.g. /Users/<username>/Library/Application Support/LensDev/extensions
|
||||||
await fs.remove(this.inTreeTargetPath);
|
await fs.remove(this.inTreeTargetPath);
|
||||||
|
|
||||||
|
// Create folder e.g. /Users/<username>/Library/Application Support/LensDev/extensions
|
||||||
await fs.ensureDir(this.inTreeTargetPath);
|
await fs.ensureDir(this.inTreeTargetPath);
|
||||||
|
|
||||||
|
// Copy static/extensions to e.g. /Users/<username>/Library/Application Support/LensDev/extensions
|
||||||
await fs.copy(this.inTreeFolderPath, this.inTreeTargetPath);
|
await fs.copy(this.inTreeFolderPath, this.inTreeTargetPath);
|
||||||
|
|
||||||
|
// Set bundled folder path to e.g. /Users/<username>/Library/Application Support/LensDev/extensions
|
||||||
this.bundledFolderPath = this.inTreeTargetPath;
|
this.bundledFolderPath = this.inTreeTargetPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -41,8 +41,8 @@ export class ExtensionInstaller {
|
|||||||
child.on("close", () => {
|
child.on("close", () => {
|
||||||
resolve();
|
resolve();
|
||||||
});
|
});
|
||||||
child.on("error", (err) => {
|
child.on("error", error => {
|
||||||
reject(err);
|
reject(error);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@ -94,17 +94,21 @@ app.on("ready", async () => {
|
|||||||
windowManager = WindowManager.getInstance<WindowManager>(proxyPort);
|
windowManager = WindowManager.getInstance<WindowManager>(proxyPort);
|
||||||
|
|
||||||
// call after windowManager to see splash earlier
|
// call after windowManager to see splash earlier
|
||||||
const extensions = await extensionDiscovery.load();
|
try {
|
||||||
|
const extensions = await extensionDiscovery.load();
|
||||||
|
|
||||||
// Subscribe to extensions that are copied or deleted to/from the extensions folder
|
// Subscribe to extensions that are copied or deleted to/from the extensions folder
|
||||||
extensionDiscovery.events.on("add", (extension: InstalledExtension) => {
|
extensionDiscovery.events.on("add", (extension: InstalledExtension) => {
|
||||||
extensionLoader.addExtension(extension);
|
extensionLoader.addExtension(extension);
|
||||||
});
|
});
|
||||||
extensionDiscovery.events.on("remove", (lensExtensionId: LensExtensionId) => {
|
extensionDiscovery.events.on("remove", (lensExtensionId: LensExtensionId) => {
|
||||||
extensionLoader.removeExtension(lensExtensionId);
|
extensionLoader.removeExtension(lensExtensionId);
|
||||||
});
|
});
|
||||||
|
|
||||||
extensionLoader.initExtensions(extensions);
|
extensionLoader.initExtensions(extensions);
|
||||||
|
} catch (error ){
|
||||||
|
dialog.showErrorBox("Lens Error", `Could not load extensions: ${error?.message || ""}`);
|
||||||
|
}
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
appEventBus.emit({ name: "service", action: "start" });
|
appEventBus.emit({ name: "service", action: "start" });
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user