diff --git a/riocli/apply/parse.py b/riocli/apply/parse.py index 1e86574f..ee594be1 100644 --- a/riocli/apply/parse.py +++ b/riocli/apply/parse.py @@ -18,6 +18,7 @@ import click import yaml +from benedict import benedict from graphlib import TopologicalSorter from munch import munchify @@ -28,7 +29,7 @@ print_resolved_objects, ) from riocli.config import Configuration -from riocli.constants import Colors, Symbols, ApplyResult +from riocli.constants import ApplyResult, Colors, Symbols from riocli.exceptions import ResourceNotFound from riocli.utils import dump_all_yaml, print_centered_text, run_bash from riocli.utils.graph import Graphviz @@ -488,7 +489,7 @@ def _inject_rio_namespace(self, values: typing.Optional[dict] = None) -> dict: } if "rio" in values: - values["rio"].update(rio) + benedict(values["rio"]).merge(rio) else: values["rio"] = rio @@ -498,15 +499,15 @@ def _process_values_and_secrets( self, values: typing.List, secrets: typing.List ) -> None: """Process the values and secrets files and inject them into the manifest files""" - self.values, self.secrets = {}, {} + self.values, self.secrets = benedict({}), benedict({}) values = values or [] secrets = secrets or [] for v in values: - self.values.update(self._load_file_content(v, is_value=True)[0]) + benedict(self.values).merge(self._load_file_content(v, is_value=True)[0]) self.values = self._inject_rio_namespace(self.values) for s in secrets: - self.secrets.update(self._load_file_content(s, is_secret=True)[0]) + benedict(self.values).merge(self._load_file_content(s, is_secret=True)[0]) diff --git a/uv.lock b/uv.lock index 62298082..0ec11e68 100644 --- a/uv.lock +++ b/uv.lock @@ -721,7 +721,7 @@ wheels = [ [[package]] name = "rapyuta-io-cli" -version = "0.0.0" +version = "9.0.4" source = { editable = "." } dependencies = [ { name = "argparse" },