[ffx] when getting config objects, merge levels

The default behavior of `ffx config get` is to stop when it reaches
the first level with an existing value. Unfortunately, if the
value in question is an "object", then that behavior is not
helpful. E.g. if at the user level, we have `obj: { foo=bar }`
and at the run-time level we have `obj: { x=y }`, then when querying
`obj.foo` or obj.x` we get the respective values. But if we just
query `obj`, we only get `obj.x` (since that is the first one found).

Instead, when we find an object, we should merge in from all the
levels, ignoring keys that already exist, to match the semantics
of individual field queries.

Fixed: 359934352
Change-Id: I47c201aa30ef165b104fae166a36078f0fb6d126
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1117175
Reviewed-by: Clayton Wilkinson <wilkinsonclay@google.com>
Commit-Queue: Steven Grady <slgrady@google.com>
1 file changed
tree: f3cb272a269dd6f88ae5ef2312423f0794832adf
  1. boards/
  2. build/
  3. bundles/
  4. docs/
  5. examples/
  6. infra/
  7. products/
  8. scripts/
  9. sdk/
  10. src/
  11. third_party/
  12. tools/
  13. zircon/
  14. .clang-format
  15. .clang-tidy
  16. .editorconfig
  17. .git-blame-ignore-revs
  18. .gitattributes
  19. .gitignore
  20. .gitmodules
  21. .gn
  22. .ignore
  23. analysis_options.yaml
  24. AUTHORS
  25. BUILD.gn
  26. CODE_OF_CONDUCT.md
  27. CONTRIBUTING.md
  28. fuchsia.code-workspace
  29. LICENSE
  30. OWNERS
  31. PATENTS
  32. pyproject.toml
  33. pyrightconfig.json
  34. README.md
  35. rustfmt.toml
  36. shac.star
  37. shac.textproto
README.md

Fuchsia

What is Fuchsia?

Fuchsia is an open source, general purpose operating system supporting modern 64-bit Intel and ARM processors.

We expect everyone interacting with our project to respect our code of conduct.

Read more about Fuchsia's principles.

How can I build and run Fuchsia?

See Getting Started.

Where can I learn more about Fuchsia?

See fuchsia.dev.