31 lines
680 B
JavaScript
31 lines
680 B
JavaScript
var abbrev = require('abbrev');
|
|
var mout = require('mout');
|
|
|
|
function expandNames(obj, prefix, stack) {
|
|
prefix = prefix || '';
|
|
stack = stack || [];
|
|
|
|
mout.object.forOwn(obj, function (value, name) {
|
|
name = prefix + name;
|
|
|
|
stack.push(name);
|
|
|
|
if (typeof value === 'object' && !value.line) {
|
|
expandNames(value, name + ' ', stack);
|
|
}
|
|
});
|
|
|
|
return stack;
|
|
}
|
|
|
|
module.exports = function (commands) {
|
|
var abbreviations = abbrev(expandNames(commands));
|
|
|
|
abbreviations.i = 'install';
|
|
abbreviations.rm = 'uninstall';
|
|
abbreviations.unlink = 'uninstall';
|
|
abbreviations.ls = 'list';
|
|
|
|
return abbreviations;
|
|
};
|