@@ -426,24 +426,31 @@ func (c *configAST) beforeComment(path ...any) []byte {
426
426
)
427
427
}
428
428
429
- func (c * configAST ) setEnv (env map [string ]string ) {
429
+ func (c * configAST ) createMemberIfMissing (key string ) * hujson.ObjectMember {
430
+ i := c .memberIndex (c .root .Value .(* hujson.Object ), key )
431
+ if i == - 1 {
432
+ c .root .Value .(* hujson.Object ).Members = append (c .root .Value .(* hujson.Object ).Members , hujson.ObjectMember {
433
+ Name : hujson.Value {Value : hujson .String (key )},
434
+ })
435
+ i = len (c .root .Value .(* hujson.Object ).Members ) - 1
436
+ }
437
+ return & c .root .Value .(* hujson.Object ).Members [i ]
438
+ }
439
+
440
+ func mapToObjectMembers (env map [string ]string ) []hujson.ObjectMember {
430
441
members := make ([]hujson.ObjectMember , 0 , len (env ))
431
442
for k , v := range env {
432
443
members = append (members , hujson.ObjectMember {
433
444
Name : hujson.Value {Value : hujson .String (k )},
434
445
Value : hujson.Value {Value : hujson .String (v )},
435
446
})
436
447
}
437
- i := c .memberIndex (c .root .Value .(* hujson.Object ), "env" )
438
- if i == - 1 {
439
- c .root .Value .(* hujson.Object ).Members = append (c .root .Value .(* hujson.Object ).Members , hujson.ObjectMember {
440
- Name : hujson.Value {Value : hujson .String ("env" )},
441
- Value : hujson.Value {Value : & hujson.Object {Members : members }},
442
- })
443
- } else {
444
- c .root .Value .(* hujson.Object ).Members [i ].Value .Value = & hujson.Object {
445
- Members : members ,
446
- }
448
+ return members
449
+ }
450
+
451
+ func (c * configAST ) setEnv (env map [string ]string ) {
452
+ c .createMemberIfMissing ("env" ).Value .Value = & hujson.Object {
453
+ Members : mapToObjectMembers (env ),
447
454
}
448
455
c .root .Format ()
449
456
}
0 commit comments