Comparing version 1.2.0 to 1.3.0
@@ -51,4 +51,4 @@ 'use strict'; | ||
}).then(function(configs) { | ||
return [options.defaults || {}].concat(configs, Object.keys(env).length ? env : []).filter(Boolean); | ||
return [options.defaults || {}].concat(configs, Object.keys(env).length ? env : [], options.extendBy).filter(Boolean); | ||
}); | ||
}; |
@@ -60,3 +60,3 @@ 'use strict'; | ||
return [options.defaults || {}].concat(configs, Object.keys(env).length ? env : []).filter(Boolean); | ||
return [options.defaults || {}].concat(configs, Object.keys(env).length ? env : [], options.extendBy).filter(Boolean); | ||
}; |
{ | ||
"name": "betterc", | ||
"version": "1.2.0", | ||
"version": "1.3.0", | ||
"description": "Like rc but better", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -61,4 +61,10 @@ # betterc | ||
// initial config to be extended by all the others | ||
defaults: { | ||
foo: 'baz' | ||
}, | ||
// config which will override all the others | ||
extendBy: { | ||
foo: 'will-override-baz' | ||
} | ||
@@ -65,0 +71,0 @@ }); |
@@ -351,1 +351,52 @@ 'use strict'; | ||
}); | ||
test('should find different types of configs', async t => { | ||
const mockOpts = { | ||
'/.bemrc': '{"test": "root"}', | ||
'/argv/.bemrc': '{"test": "argv"}', | ||
'/env/config/.bemrc': '{"test": "env"}', | ||
grandparent: { | ||
parent: { | ||
cwd: { | ||
'.bemrc': '{"test": 1}' | ||
}, | ||
'.bemrc': '{"test": 2}' | ||
}, | ||
'.bemrc': '{"test": 3}' | ||
} | ||
}; | ||
mockOpts[path.join(osHomedir, '.bemrc')] = '{"test": "home"}'; | ||
mock(mockOpts); | ||
process.chdir(path.join('grandparent', 'parent', 'cwd')); | ||
process.env.bem_test = 4; | ||
process.env.bem_config = '/env/config/.bemrc'; | ||
process.argv.push('--config=/argv/.bemrc'); | ||
const expected = [ | ||
{ test: 'default' }, | ||
{ test: 'root', __source: path.resolve('/', '.bemrc') }, | ||
{ test: 'home', __source: path.join(osHomedir, '.bemrc') }, | ||
{ test: 3, __source: path.resolve(initialCwd, 'grandparent', '.bemrc') }, | ||
{ test: 2, __source: path.resolve(initialCwd, 'grandparent', 'parent', '.bemrc') }, | ||
{ test: 1, __source: path.resolve(initialCwd, 'grandparent', 'parent', 'cwd', '.bemrc') }, | ||
{ test: 'env', __source: path.resolve('/', 'env', 'config', '.bemrc') }, | ||
{ test: 'argv', __source: path.resolve('/', 'argv', '.bemrc') }, | ||
{ test: '4', config: '/env/config/.bemrc' }, | ||
{ test: 'top most extention' } | ||
]; | ||
const actual = await rc({ | ||
defaults: { test: 'default' }, | ||
extendBy: { test: 'top most extention' } | ||
}); | ||
t.deepEqual(actual, expected); | ||
delete process.env.bem_test; | ||
delete process.env.bem_config; | ||
process.argv.pop(); | ||
}); |
@@ -354,1 +354,52 @@ 'use strict'; | ||
}); | ||
test('extendBy option should be last in list', t => { | ||
const mockOpts = { | ||
'/.bemrc': '{"test": "root"}', | ||
'/argv/.bemrc': '{"test": "argv"}', | ||
'/env/config/.bemrc': '{"test": "env"}', | ||
grandparent: { | ||
parent: { | ||
cwd: { | ||
'.bemrc': '{"test": 1}' | ||
}, | ||
'.bemrc': '{"test": 2}' | ||
}, | ||
'.bemrc': '{"test": 3}' | ||
} | ||
}; | ||
mockOpts[path.join(osHomedir, '.bemrc')] = '{"test": "home"}'; | ||
mock(mockOpts); | ||
process.chdir(path.join('grandparent', 'parent', 'cwd')); | ||
process.env.bem_test = 4; | ||
process.env.bem_config = '/env/config/.bemrc'; | ||
process.argv.push('--config=/argv/.bemrc'); | ||
const expected = [ | ||
{ test: 'default' }, | ||
{ test: 'root', __source: path.resolve('/', '.bemrc') }, | ||
{ test: 'home', __source: path.join(osHomedir, '.bemrc') }, | ||
{ test: 3, __source: path.resolve(initialCwd, 'grandparent', '.bemrc') }, | ||
{ test: 2, __source: path.resolve(initialCwd, 'grandparent', 'parent', '.bemrc') }, | ||
{ test: 1, __source: path.resolve(initialCwd, 'grandparent', 'parent', 'cwd', '.bemrc') }, | ||
{ test: 'env', __source: path.resolve('/', 'env', 'config', '.bemrc') }, | ||
{ test: 'argv', __source: path.resolve('/', 'argv', '.bemrc') }, | ||
{ test: '4', config: '/env/config/.bemrc' }, | ||
{ test: 'top most extention' } | ||
]; | ||
const actual = rc({ | ||
defaults: { test: 'default' }, | ||
extendBy: { test: 'top most extention' } | ||
}); | ||
t.deepEqual(actual, expected); | ||
delete process.env.bem_test; | ||
delete process.env.bem_config; | ||
process.argv.pop(); | ||
}); |
35414
828
123
36