1 | 'use strict';
|
2 |
|
3 | var _ = require('lodash');
|
4 | var resolve = require('resolve-dep');
|
5 |
|
6 | var defaultsDeep = _.partialRight(_.merge, function deep(value, other) {
|
7 | if (_.isString(value) || _.isArray(value) || _.isDate(other)) return value;
|
8 | return _.merge(value, other, deep);
|
9 | });
|
10 |
|
11 | var exports = module.exports = {};
|
12 | var taker;
|
13 |
|
14 | exports.bind = function(instance) {
|
15 | taker = instance;
|
16 | return exports;
|
17 | };
|
18 |
|
19 | exports.resolve = function(pattern) {
|
20 | var resolved = resolve.npm(pattern, {type: 'devDependencies'});
|
21 | return resolved.map(function(module) {
|
22 | return require(module);
|
23 | });
|
24 | };
|
25 |
|
26 | exports.registerTasks = function(registries) {
|
27 | registries.forEach(function(module) {
|
28 | var tasks = module.tasks;
|
29 | Object.keys(tasks).forEach(function(task) {
|
30 | taker.registry(new (tasks[task])(taker));
|
31 | });
|
32 | });
|
33 | };
|
34 |
|
35 | exports.registerIndexes = function(registries) {
|
36 | registries.forEach(function(module) {
|
37 | if(module.index) {
|
38 | taker.registry(new (module.index)(taker));
|
39 | }
|
40 | });
|
41 | };
|
42 |
|
43 | exports.loadDefaults = function(registries) {
|
44 | var config = {};
|
45 | registries.forEach(function(module) {
|
46 | if(module.defaults) {
|
47 | defaultsDeep(config, module.defaults);
|
48 | }
|
49 | });
|
50 | return config;
|
51 | };
|