【发布时间】:2021-11-29 19:50:49
【问题描述】:
我想将一个 yaml 文档覆盖在另一个文档之上,将任何数组更新为覆盖的值。
给定基础/源文件:
#base.yaml
include:
- directory: foo/foo1
- directory: bar/bar1
和覆盖文件:
#overlay.yaml
include:
- directory: foo/foo1
extra: true
stuff:
stuff1: true
stuff2: true
- directory: something/else
结果应该是这样的
#results.yaml
include:
- directory: foo/foo1
extra: true
stuff:
stuff1: true
stuff2: true
- directory: bar/bar1
- directory: something/else
我想我已经接近让它与来自this post 的yq 一起使用,但列表元素没有被覆盖。相反,我得到了 foo/foo1 的重复项
yq eval-all '. as $item ireduce ({}; . *+ $item)' base.yaml overlay.yaml 产生
#base.yaml
#overlay.yaml
include:
- directory: foo/foo1
- directory: bar/bar1
- directory: foo/foo1
extra: true
stuff:
stuff1: true
stuff2: true
- directory: something/else
在* 之后删除+ 将从输出中删除bar/bar1。
基本上我认为我是在include 上操作,而不是include 键的值。我将不胜感激任何帮助使覆盖工作。
【问题讨论】: