123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- var mout = require('mout');
- var Q = require('q');
- var endpointParser = require('bower-endpoint-parser');
- var PackageRepository = require('../core/PackageRepository');
- var cli = require('../util/cli');
- var Tracker = require('../util/analytics').Tracker;
- var defaultConfig = require('../config');
- function info(logger, endpoint, property, config) {
- var repository;
- var decEndpoint;
- var tracker;
- config = defaultConfig(config);
- repository = new PackageRepository(config, logger);
- tracker = new Tracker(config);
- decEndpoint = endpointParser.decompose(endpoint);
- tracker.trackDecomposedEndpoints('info', [decEndpoint]);
- return Q.all([
- getPkgMeta(repository, decEndpoint, property),
- decEndpoint.target === '*' && !property ? repository.versions(decEndpoint.source) : null
- ])
- .spread(function (pkgMeta, versions) {
- if (versions) {
- return {
- name: decEndpoint.source,
- versions: versions,
- latest: pkgMeta
- };
- }
- return pkgMeta;
- });
- }
- function getPkgMeta(repository, decEndpoint, property) {
- return repository.fetch(decEndpoint)
- .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);
- }
- return pkgMeta;
- });
- }
- // -------------------
- info.line = function (logger, argv) {
- var options = cli.readOptions(argv);
- var pkg = options.argv.remain[1];
- var property = options.argv.remain[2];
- if (!pkg) {
- return new Q();
- }
- return info(logger, pkg, property);
- };
- info.completion = function () {
- // TODO:
- };
- module.exports = info;
|