Blame view

node_modules/bower/lib/commands/index.js 2.2 KB
2dda2e10   Administrator   generator ignore
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
  var Q = require('q');
  var Logger = require('bower-logger');
  var config = require('../config');
  
  /**
   * 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) {
      function runApi() {
          var command = require(id);
          var commandArgs = [].slice.call(arguments);
  
          return withLogger(function (logger) {
              commandArgs.unshift(logger);
  
              return command.apply(undefined, commandArgs);
          });
      }
  
      function runFromArgv(argv) {
          var commandArgs;
          var command = require(id);
  
          commandArgs = command.readOptions(argv);
  
          return withLogger(function (logger) {
              commandArgs.unshift(logger);
  
              return command.apply(undefined, commandArgs);
          });
      }
  
      function withLogger(func) {
          var logger = new Logger();
  
          Q.try(func, logger)
          .done(function () {
              config.restore();
              var args = [].slice.call(arguments);
              args.unshift('end');
              logger.emit.apply(logger, args);
          }, function (error) {
              config.restore();
              logger.emit('error', error);
          });
  
          return logger;
      }
  
      runApi.line = runFromArgv;
  
      return runApi;
  }
  
  
  module.exports = {
      cache: {
          clean: commandFactory('./cache/clean'),
          list: commandFactory('./cache/list'),
      },
      help: commandFactory('./help'),
      home: commandFactory('./home'),
      info: commandFactory('./info'),
      init: commandFactory('./init'),
      install: commandFactory('./install'),
      link: commandFactory('./link'),
      list: commandFactory('./list'),
      login: commandFactory('./login'),
      lookup: commandFactory('./lookup'),
      prune: commandFactory('./prune'),
      register: commandFactory('./register'),
      search: commandFactory('./search'),
      update: commandFactory('./update'),
      uninstall: commandFactory('./uninstall'),
      unregister: commandFactory('./unregister'),
      version: commandFactory('./version')
  };