cli-engine
Version:
Generic CLI Framework
53 lines (44 loc) • 1.52 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _manager = require('./manager');
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _fsExtra = require('fs-extra');
var _fsExtra2 = _interopRequireDefault(_fsExtra);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function pluginPath(root, name) {
let p = _path2.default.join(root, 'node_modules', name);
if (_fsExtra2.default.existsSync(p)) return p;
let up = _path2.default.dirname(root);
if (up === root) throw new Error(`Could not find core plugin ${name}`);
return pluginPath(up, name);
}
class CorePlugins extends _manager.Manager {
/**
* list core plugins
* @returns {PluginPath[]}
*/
async list() {
try {
const cli = this.config.pjson['cli-engine'];
let plugins = [];
if (this.config.pjson.main) {
// if main is set in package.json, add plugin as self
plugins.push(new _manager.PluginPath({ config: this.config, type: 'core', path: this.config.root }));
}
if (!cli) return plugins;
if (cli.plugins) {
plugins = plugins.concat((cli.plugins || []).map(name => {
return new _manager.PluginPath({ config: this.config, type: 'core', path: pluginPath(this.config.root, name) });
}));
}
return plugins;
} catch (err) {
this.cli.warn(err, 'Error loading core plugins');
return [];
}
}
}
exports.default = CorePlugins;