mirror of
https://github.com/bower/bower.git
synced 2026-01-15 01:08:07 -05:00
47 lines
1.4 KiB
JavaScript
47 lines
1.4 KiB
JavaScript
// ==========================================
|
|
// BOWER: Install API
|
|
// ==========================================
|
|
// Copyright 2012 Twitter, Inc
|
|
// Licensed under The MIT License
|
|
// http://opensource.org/licenses/MIT
|
|
// ==========================================
|
|
// 1. Recursively resolve dependencies
|
|
// 2. Intelligently work out which deps to
|
|
// use (versioning)
|
|
// 3. Throw if deps conflict
|
|
// ==========================================
|
|
|
|
var Emitter = require('events').EventEmitter;
|
|
var async = require('async');
|
|
var nopt = require('nopt');
|
|
|
|
var Manager = require('../core/manager');
|
|
var save = require('../util/save');
|
|
var list = require('./list');
|
|
var help = require('./help');
|
|
|
|
var optionTypes = { help: Boolean };
|
|
var shorthand = { 'h': ['--help'], 'S': ['--save'] };
|
|
|
|
module.exports = function (paths, options) {
|
|
var emitter = new Emitter;
|
|
var manager = new Manager(paths)
|
|
|
|
if (options && options.save) save(emitter, manager, paths);
|
|
|
|
manager
|
|
.on('data' , emitter.emit.bind(emitter, 'data'))
|
|
.on('error' , emitter.emit.bind(emitter, 'error'))
|
|
.on('resolve' , emitter.emit.bind(emitter, 'end'))
|
|
.resolve();
|
|
|
|
return emitter;
|
|
};
|
|
|
|
module.exports.line = function (argv) {
|
|
var options = nopt(optionTypes, shorthand, argv);
|
|
var paths = options.argv.remain.slice(1);
|
|
|
|
if (options.help) return help('install');
|
|
return module.exports(paths, options);
|
|
}; |