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
.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);

View File

@@ -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] + "'.");
}
}
}

View File

@@ -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"
},