Files
bower/lib/commands/info.js
André Cruz 4c3802878a Another huge commit.
- Add info command
- Fix list --paths
- Fix search with no name
- Fix conflict detection when uninstalling
- Mix tweaks and fixes
2013-06-23 01:14:08 +01:00

77 lines
1.9 KiB
JavaScript

var EventEmitter = require('events').EventEmitter;
var mout = require('mout');
var PackageRepository = require('../core/PackageRepository');
var Logger = require('../core/Logger');
var cli = require('../util/cli');
var defaultConfig = require('../config');
function info(pkg, property, options, config) {
var repository;
var emitter = new EventEmitter();
var logger = new Logger();
config = mout.object.deepMixIn(config || {}, defaultConfig);
repository = new PackageRepository(config, logger);
pkg = pkg.split('#');
pkg = {
name: pkg[0],
version: pkg[1]
};
// If no version was specified, show whole package info
if (!pkg.version) {
repository.versions(pkg.name)
.then(function (versions) {
emitter.emit('end', {
package: pkg.name,
versions: versions
});
});
// Otherwise fetch version and show package meta
} else {
repository.fetch({
source: pkg.name,
target: pkg.version
})
.spread(function (canonicalDir, pkgMeta) {
pkgMeta = mout.object.filter(pkgMeta, function (value, key) {
return key.charAt(0) !== '_';
});
// Retrieve specific property
if (property) {
pkgMeta = mout.object.get(pkgMeta, property);
}
emitter.emit('end', pkgMeta);
}, function (error) {
emitter.emit('error', error);
});
}
return logger.pipe(emitter);
}
// -------------------
info.line = function (argv) {
var options = info.options(argv);
if (!options.argv.remain[1]) {
return null;
}
return info(options.argv.remain[1], options.argv.remain[2], options);
};
info.options = function (argv) {
return cli.readOptions(argv);
};
info.completion = function () {
// TODO:
};
module.exports = info;