diff --git a/lib/cli.js b/lib/cli.js index cbdeb06..5b533c5 100644 --- a/lib/cli.js +++ b/lib/cli.js @@ -12,7 +12,7 @@ module.exports = function() { program .version(version) - .option('-P, --plugin-path [path]', 'look for plugins installed at [path] as well as node_modules', function(p) { Plugin.addPluginPath(p); }) + .option('-P, --plugin-path [path]', 'look for plugins installed at [path] as well as the default locations ([path] can also point to a single plugin)', function(p) { Plugin.addPluginPath(p); }) .option('-D, --debug', 'turn on debug level logging', function() { logger.setDebugEnabled(true) }) .parse(process.argv); diff --git a/lib/plugin.js b/lib/plugin.js index 262523c..c9b6162 100644 --- a/lib/plugin.js +++ b/lib/plugin.js @@ -3,6 +3,7 @@ var fs = require('fs'); var semver = require('semver'); var User = require('./user').User; var version = require('./version'); +var log = require("./logger")._system; 'use strict'; @@ -162,20 +163,27 @@ Plugin.installed = function() { if (!fs.statSync(pluginPath).isDirectory()) continue; // does this module contain a package.json? + var pjson; try { // throws an Error if this isn't a homebridge plugin - Plugin.loadPackageJSON(pluginPath); + pjson = Plugin.loadPackageJSON(pluginPath); } catch (err) { // swallow error and skip this module continue; } + // get actual name if this path points inside a single plugin + if (!name) name = pjson.name; + // add it to the return list if (!pluginsByName[name]) { - pluginsByName[name] = true; + pluginsByName[name] = pluginPath; plugins.push(new Plugin(pluginPath)); } + else { + log.warn("Warning: skipping plugin found at '" + pluginPath + "' since we already loaded the same plugin from '" + pluginsByName[name] + "'."); + } } } diff --git a/package.json b/package.json index e4011dd..45d6a78 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "homebridge", "description": "HomeKit support for the impatient", - "version": "0.2.0", + "version": "0.2.1", "scripts": { "dev": "DEBUG=* ./bin/homebridge -P example-plugins/ || true" },