1 | 'use strict';
|
2 |
|
3 | var fs = require('fs'),
|
4 | path = require('path');
|
5 |
|
6 | var glob = require('glob'),
|
7 | yaml = require('js-yaml'),
|
8 | deepMerge = require('deepmerge');
|
9 |
|
10 | function push(obj, key, data) {
|
11 | var parts = key.split('.');
|
12 |
|
13 | while (parts.length > 1) {
|
14 | var prop = parts.shift();
|
15 |
|
16 | obj = obj[prop] || (obj[prop] = {});
|
17 | }
|
18 |
|
19 | prop = parts.shift();
|
20 |
|
21 | obj[prop] = deepMerge(obj[prop] || {}, data);
|
22 | }
|
23 |
|
24 | module.exports = function(from) {
|
25 | var data = {};
|
26 |
|
27 | glob
|
28 | .sync(path.join(from, '**/*.yml'))
|
29 | .forEach(function(file) {
|
30 | var keypath = path.relative(from, file)
|
31 | .replace(/[\\\/]/g, '.')
|
32 | .replace('.yml', '');
|
33 |
|
34 | push(data, keypath, yaml.load(fs.readFileSync(file)));
|
35 | });
|
36 |
|
37 | return data;
|
38 | };
|