UNPKG

bower

Version:

The browser package manager

74 lines (59 loc) 1.93 kB
var mout = require('mout'); var Q = require('q'); var endpointParser = require('bower-endpoint-parser'); var PackageRepository = require('../core/PackageRepository'); var defaultConfig = require('../config'); function info(logger, endpoint, property, config) { if (!endpoint) { return; } // handle @ as version divider var splitParts = endpoint.split('/'); splitParts[splitParts.length - 1] = splitParts[ splitParts.length - 1 ].replace('@', '#'); endpoint = splitParts.join('/'); var repository; var decEndpoint; config = defaultConfig(config); repository = new PackageRepository(config, logger); decEndpoint = endpointParser.decompose(endpoint); 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.readOptions = function(argv) { var cli = require('../util/cli'); var options = cli.readOptions(argv); var pkg = options.argv.remain[1]; var property = options.argv.remain[2]; return [pkg, property]; }; module.exports = info;