UNPKG

1.45 kBJavaScriptView Raw
1"use strict";
2
3var argx = require('argx'),
4 apemanfile = require('apemanfile'),
5 checkNeeds = require('./checking/check_needs'),
6 extend = require('extend'),
7 async = require('async');
8
9/** @lends apemanNeed */
10function apemanNeed(options, callback) {
11 var args = argx(arguments);
12 callback = args.pop('function') || argx.noop;
13 options = args.pop('object') || {};
14 var configuration = options.configuration || process.cwd();
15 async.waterfall([
16 function (callback) {
17 apemanfile.load(configuration, {
18 asis: true
19 }, callback);
20 },
21 function (apemanfile, callback) {
22 async.waterfall([
23 function (callback) {
24 apemanfile.find('$needs', callback);
25 },
26 function (parent, callback) {
27 var result = {};
28 result = extend(result, parent);
29 var $children = apemanfile.$children || {};
30 Object.keys($children).forEach(function (key) {
31 var $child = $children[key];
32 result = extend(result, $child.$needs || {});
33 });
34 callback(null, result);
35 }
36 ], callback);
37 },
38 function (needs, callback) {
39 checkNeeds(needs, callback);
40 }
41 ], callback);
42}
43
44module.exports = apemanNeed;