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

extensions-api -- in-progress / loading extension manifest fix

Signed-off-by: Roman <ixrock@gmail.com>
This commit is contained in:
Roman 2020-09-01 15:44:49 +03:00
parent 17478fd38e
commit 3a06f76545

View File

@ -52,21 +52,22 @@ export class ExtensionStore extends BaseStore<ExtensionStoreModel> {
async loadExtensions(basePath: string): Promise<ExtensionManifest[]> { async loadExtensions(basePath: string): Promise<ExtensionManifest[]> {
const paths = await fs.readdir(basePath); const paths = await fs.readdir(basePath);
const extensionsStats = paths.map(fileName => { const manifestsLoading = paths.map(fileName => {
const absPath = path.resolve(basePath, fileName); const absPath = path.resolve(basePath, fileName);
const manifestPath = path.resolve(absPath, "manifest.json"); const manifestPath = path.resolve(absPath, "package.json");
return fs.stat(manifestPath).then(async stat => { return new Promise<ExtensionManifest>(async resolve => {
if (stat.isFile()) { try {
const manifestJson = await fs.readJson(manifestPath); const manifestJson = await fs.readJson(manifestPath);
const manifest: ExtensionManifest = { resolve({
...manifestJson, ...manifestJson,
manifestPath: manifestPath, manifestPath: manifestPath,
} });
return manifest; } catch (err) {
resolve(null);
} }
}) })
}); });
let extensions = await Promise.all(extensionsStats.map(extStat => extStat.catch(() => null))); let extensions = await Promise.all(manifestsLoading);
extensions = extensions.filter(v => !!v); // filter out files and invalid folders (without manifest.json) extensions = extensions.filter(v => !!v); // filter out files and invalid folders (without manifest.json)
logger.info(`[EXTENSION-STORE]: loaded ${extensions.length} extensions`, { basePath, extensions }); logger.info(`[EXTENSION-STORE]: loaded ${extensions.length} extensions`, { basePath, extensions });
return extensions; return extensions;