mirror of
https://github.com/bower/bower.git
synced 2026-01-15 01:08:07 -05:00
This commit changes the interface of the command functions exported by the files in `lib/commands`. The functions now return a promise and accept a logger as the first argument. This has several advantages * The promise style is consistent with the rest of the code. * It removes a lot of duplicate code. * The command factory does not need to proxy the logger object.
43 lines
1003 B
JavaScript
43 lines
1003 B
JavaScript
var Q = require('q');
|
|
var path = require('path');
|
|
var fs = require('graceful-fs');
|
|
var cli = require('../util/cli');
|
|
var createError = require('../util/createError');
|
|
|
|
function help(logger, name) {
|
|
var json;
|
|
|
|
if (name) {
|
|
json = path.resolve(__dirname, '../../templates/json/help-' + name.replace(/\s+/g, '/') + '.json');
|
|
} else {
|
|
json = path.resolve(__dirname, '../../templates/json/help.json');
|
|
}
|
|
|
|
return Q.promise(function (resolve) {
|
|
fs.exists(json, resolve);
|
|
})
|
|
.then(function (exists) {
|
|
if (!exists) {
|
|
throw createError('Unknown command: ' + name, 'EUNKOWNCMD', {
|
|
command: name
|
|
});
|
|
}
|
|
|
|
return require(json);
|
|
});
|
|
}
|
|
|
|
// -------------------
|
|
|
|
help.line = function (logger, argv) {
|
|
var options = cli.readOptions(argv);
|
|
var name = options.argv.remain.slice(1).join(' ');
|
|
return help(logger, name);
|
|
};
|
|
|
|
help.completion = function () {
|
|
// TODO
|
|
};
|
|
|
|
module.exports = help;
|