This repository was archived by the owner on Sep 25, 2020. It is now read-only.
File tree Expand file tree Collapse file tree 3 files changed +41
-1
lines changed
Expand file tree Collapse file tree 3 files changed +41
-1
lines changed Original file line number Diff line number Diff line change @@ -8,6 +8,7 @@ var join = require('path').join;
88var fs = require ( 'fs' ) ;
99var EventEmitter = require ( 'events' ) . EventEmitter ;
1010var TypedError = require ( 'error/typed' ) ;
11+ var deepExtend = require ( 'deep-extend' ) ;
1112
1213var InvalidDirname = TypedError ( {
1314 type : 'missing.dirname.argument' ,
@@ -191,6 +192,14 @@ function fetchConfigSync(dirname, opts) {
191192 } ) ;
192193 }
193194
194- return putPath ( configState , keyPath , value ) ;
195+ var v = getKey ( keyPath ) ;
196+
197+ if ( typeof v === 'object' && v !== null ) {
198+ v = deepExtend ( v , value ) ;
199+ } else {
200+ v = value ;
201+ }
202+
203+ return putPath ( configState , keyPath , v ) ;
195204 }
196205}
Original file line number Diff line number Diff line change 1313 },
1414 "dependencies" : {
1515 "config-chain" : " ^1.1.8" ,
16+ "deep-extend" : " ^0.2.11" ,
1617 "dotty" : " 0.0.2" ,
1718 "error" : " ^4.1.1" ,
1819 "flatten-prototypes" : " ^2.0.1" ,
Original file line number Diff line number Diff line change @@ -256,6 +256,36 @@ test('config.set()', function (assert) {
256256 assert . end ( ) ;
257257} ) ;
258258
259+ test ( 'config.set() deep' , function ( assert ) {
260+ var config = fetchConfig ( __dirname ) ;
261+
262+ config . set ( 'key' , {
263+ foo : 'bar' ,
264+ deep : {
265+ 'thingy' : 'thongy'
266+ }
267+ } ) ;
268+
269+ config . set ( 'key' , {
270+ newKey : 'woh' ,
271+ deep : {
272+ 'other' : 'yeah'
273+ }
274+ } ) ;
275+
276+ var k = config . get ( 'key' ) ;
277+ assert . deepEqual ( k , {
278+ foo : 'bar' ,
279+ newKey : 'woh' ,
280+ deep : {
281+ 'thingy' : 'thongy' ,
282+ 'other' : 'yeah'
283+ }
284+ } ) ;
285+
286+ assert . end ( ) ;
287+ } ) ;
288+
259289test ( 'config.set(undefined) throws' , function ( assert ) {
260290 var config = fetchConfig ( __dirname ) ;
261291
You can’t perform that action at this time.
0 commit comments