UNPKG

1.42 kBJavaScriptView Raw
1"use strict";
2
3const 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 let args = argx(arguments);
12 callback = args.pop('function') || argx.noop;
13 options = args.pop('object') || {};
14 let configuration = options.configuration || process.cwd();
15 async.waterfall([
16 (callback) => {
17 apemanfile.load(configuration, {
18 asis: false
19 }, callback);
20 },
21 (apemanfile, callback) => {
22 async.waterfall([
23 (callback) => {
24 apemanfile.find('$needs', callback);
25 },
26 (parent, callback) => {
27 let result = {};
28 result = extend(result, parent);
29 let $children = apemanfile.$children || {};
30 Object.keys($children).forEach((key) => {
31 let $child = $children[key];
32 result = extend(result, $child.$needs || {});
33 });
34 callback(null, result);
35 }
36 ], callback);
37 },
38 (needs, callback) => {
39 checkNeeds(needs, callback);
40 }
41 ], callback);
42}
43
44module.exports = apemanNeed;