Better handling of custom plugin paths

This commit is contained in:
Nick Farina
2015-11-03 21:14:25 -08:00
parent 52d51c0fcf
commit 2470f26451
3 changed files with 12 additions and 4 deletions

View File

@@ -12,7 +12,7 @@ module.exports = function() {
program program
.version(version) .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) }) .option('-D, --debug', 'turn on debug level logging', function() { logger.setDebugEnabled(true) })
.parse(process.argv); .parse(process.argv);

View File

@@ -3,6 +3,7 @@ var fs = require('fs');
var semver = require('semver'); var semver = require('semver');
var User = require('./user').User; var User = require('./user').User;
var version = require('./version'); var version = require('./version');
var log = require("./logger")._system;
'use strict'; 'use strict';
@@ -162,20 +163,27 @@ Plugin.installed = function() {
if (!fs.statSync(pluginPath).isDirectory()) continue; if (!fs.statSync(pluginPath).isDirectory()) continue;
// does this module contain a package.json? // does this module contain a package.json?
var pjson;
try { try {
// throws an Error if this isn't a homebridge plugin // throws an Error if this isn't a homebridge plugin
Plugin.loadPackageJSON(pluginPath); pjson = Plugin.loadPackageJSON(pluginPath);
} }
catch (err) { catch (err) {
// swallow error and skip this module // swallow error and skip this module
continue; continue;
} }
// get actual name if this path points inside a single plugin
if (!name) name = pjson.name;
// add it to the return list // add it to the return list
if (!pluginsByName[name]) { if (!pluginsByName[name]) {
pluginsByName[name] = true; pluginsByName[name] = pluginPath;
plugins.push(new Plugin(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] + "'.");
}
} }
} }

View File

@@ -1,7 +1,7 @@
{ {
"name": "homebridge", "name": "homebridge",
"description": "HomeKit support for the impatient", "description": "HomeKit support for the impatient",
"version": "0.2.0", "version": "0.2.1",
"scripts": { "scripts": {
"dev": "DEBUG=* ./bin/homebridge -P example-plugins/ || true" "dev": "DEBUG=* ./bin/homebridge -P example-plugins/ || true"
}, },