1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- var Q = require('q');
- var Logger = require('bower-logger');
- /**
- * Require commands only when called.
- *
- * Running `commandFactory(id)` is equivalent to `require(id)`. Both calls return
- * a command function. The difference is that `cmd = commandFactory()` and `cmd()`
- * return as soon as possible and load and execute the command asynchronously.
- */
- function commandFactory(id) {
- if (process.env.STRICT_REQUIRE) {
- require(id);
- }
- function command() {
- var commandArgs = [].slice.call(arguments);
- return withLogger(function (logger) {
- commandArgs.unshift(logger);
- return require(id).apply(undefined, commandArgs);
- });
- }
- function runFromArgv(argv) {
- return withLogger(function (logger) {
- return require(id).line.call(undefined, logger, argv);
- });
- }
- function withLogger(func) {
- var logger = new Logger();
- Q.try(func, logger)
- .done(function () {
- var args = [].slice.call(arguments);
- args.unshift('end');
- logger.emit.apply(logger, args);
- }, function (error) {
- logger.emit('error', error);
- });
- return logger;
- }
- command.line = runFromArgv;
- return command;
- }
- module.exports = {
- cache: {
- clean: commandFactory('./cache/clean'),
- list: commandFactory('./cache/list'),
- },
- completion: commandFactory('./completion'),
- help: commandFactory('./help'),
- home: commandFactory('./home'),
- info: commandFactory('./info'),
- init: commandFactory('./init'),
- install: commandFactory('./install'),
- link: commandFactory('./link'),
- list: commandFactory('./list'),
- lookup: commandFactory('./lookup'),
- prune: commandFactory('./prune'),
- register: commandFactory('./register'),
- search: commandFactory('./search'),
- update: commandFactory('./update'),
- uninstall: commandFactory('./uninstall'),
- version: commandFactory('./version')
- };
|