Files
bower/lib/util/dependencyLinker.js
2014-04-12 13:20:13 +02:00

40 lines
1.4 KiB
JavaScript

var Q = require('q');
var Config = require('bower-config');
var createLink = require('../util/createLink');
var readJson = require('../util/readJson');
var path = require('path');
var fs = require('graceful-fs');
module.exports.link = function (packages, config, logger) {
var rootComponentsDir = path.join(config.cwd, config.directory);
// create links for new packages and make sure that existing
// ones has all dependencies linked
var promises = Object.keys(packages).map(function (depName) {
var dep = packages[depName];
var depPath = dep.canonicalDir || path.join(rootComponentsDir, dep.name);
var conf = Config.read(depPath);
var componentsDir = path.join(conf.cwd, conf.directory);
return readJson(depPath)
.spread(function (json, deprecated, assumed) {
if (json.dependencies) {
return Q.all(Object.keys(json.dependencies || {}).map(function (d) {
var dst = path.join(componentsDir, d);
var src = path.join(rootComponentsDir, d);
return Q.nfcall(fs.stat, dst)
.fail(function () {
logger.info('dep-link', d, {
name: json.name + '#' + d
});
return createLink(src, dst, {relative: true});
});
}));
}
});
});
return Q.all(promises);
};