From b5d96d215f3c73cd84532091bed4473e52cbd47a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20Astori?= Date: Mon, 5 Feb 2018 01:30:57 -0500 Subject: [PATCH] Ensure packages loaded are directories --- src/plugins/packages/index.js | 44 ++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/src/plugins/packages/index.js b/src/plugins/packages/index.js index 080e1094..aefa2303 100644 --- a/src/plugins/packages/index.js +++ b/src/plugins/packages/index.js @@ -39,34 +39,40 @@ function loadPackages() { if (err) { return; } - packages.forEach((packageName) => { - const packageFile = getModuleInfo(packageName); - if (!packageFile) { - return; - } - packageMap.set(packageName, packageFile); - if (packageFile.type === "theme") { - themes.addTheme(packageName, packageFile); - } - if (packageFile.onServerStart) { - packageFile.onServerStart(packageApis(packageName)); - } + packages.forEach((packageName) => { + fs.stat(Helper.getPackageModulePath(packageName), function(err2, stat) { + if (err2 || !stat.isDirectory()) { + return; + } + + const packageFile = getModuleInfo(packageName); + + if (!packageFile) { + return; + } + + packageMap.set(packageName, packageFile); + + if (packageFile.type === "theme") { + themes.addTheme(packageName, packageFile); + } + + if (packageFile.onServerStart) { + packageFile.onServerStart(packageApis(packageName)); + } + }); }); }); } function getModuleInfo(packageName) { - let module; - try { - module = require(Helper.getPackageModulePath(packageName)); - } catch (e) { - log.warn(`Specified package ${colors.yellow(packageName)} is not installed in packages directory`); - return; - } + const module = require(Helper.getPackageModulePath(packageName)); + if (!module.thelounge) { log.warn(`Specified package ${colors.yellow(packageName)} doesn't have required information.`); return; } + return module.thelounge; }