YAML 평면화 도구

YAML 평면화 도구

다음과 같이 yaml 구조를 평면화할 수 있는 도구가 있습니까?

foo:
  bar:
    baz: true

다음을 입력하세요:

foo.bar.baz = true

이 구문 이름이 무엇인지 잘 모르겠습니다.

컨텍스트: 다음과 같이 많은 값을 설정하려면 이 hcl이 필요합니다.

set {
  name = "foo.bar.baz"
  value = false
}

이것은 Terraform의 helm-provider를 위한 것입니다. json이나 yaml을 직접 사용할 수 없습니다. 변경하려는 속성을 하나씩 설정해야 합니다(작동하지 않는 이유를 확인하기 위해 많은 것을 비활성화해야 했습니다) ).

답변1

사용안드레이 키슬류크yq입력 문서에서 부울 값이 있는 모든 경로를 얻으려면 각 경로에 대해 경로 요소를 점으로 연결한 다음 해당 경로에서 찾은 값과 함께 각 점 경로를 출력합니다.

yq -r '
    paths(type == "boolean") as $p |
    [ ($p | join(".")), getpath($p) ] |
    join(" = ")' file

입력 문서 예:

foo:
  bar:
    baz: true
  baar:
    baz: false

결과 출력:

foo.bar.baz = true
foo.baar.baz = false

enabled부울 값이 있는 명명된 키로 끝나는 경로만 가져옵니다 true(이미지에 표시됨).다른 곳의 예에서는):

yq -r '
    (
      paths(type == "boolean" and .) |
      select(last == "enabled")
    ) as $p |
    [ ($p | join(".")), getpath($p) ] |
    join(" = ")' file

답변2

아무것도 찾을 수 없어서 직접 '__'을 만들었습니다.)

https://github.com/kokizzu/yamlplatten

관련 정보