diff --git a/supervisor/addons/validate.py b/supervisor/addons/validate.py index 8090e1d79e4..31e2d2f53e4 100644 --- a/supervisor/addons/validate.py +++ b/supervisor/addons/validate.py @@ -32,6 +32,7 @@ ATTR_DISCOVERY, ATTR_DOCKER_API, ATTR_ENVIRONMENT, + ATTR_FIELDS, ATTR_FULL_ACCESS, ATTR_GPIO, ATTR_HASSIO_API, @@ -455,6 +456,7 @@ def _migrate(config: dict[str, Any]): { vol.Required(ATTR_NAME): str, vol.Optional(ATTR_DESCRIPTON): vol.Maybe(str), + vol.Optional(ATTR_FIELDS): {str: vol.Self}, }, extra=vol.REMOVE_EXTRA, ) diff --git a/supervisor/const.py b/supervisor/const.py index ab8f0ccfa5a..10a53683e40 100644 --- a/supervisor/const.py +++ b/supervisor/const.py @@ -189,6 +189,7 @@ ATTR_EXCLUDE_DATABASE = "exclude_database" ATTR_EXTRA = "extra" ATTR_FEATURES = "features" +ATTR_FIELDS = "fields" ATTR_FILENAME = "filename" ATTR_FLAGS = "flags" ATTR_FOLDERS = "folders" diff --git a/tests/store/test_translation_load.py b/tests/store/test_translation_load.py index 4725e5980c5..1b7057e1eda 100644 --- a/tests/store/test_translation_load.py +++ b/tests/store/test_translation_load.py @@ -20,7 +20,16 @@ def test_loading_traslations(coresys: CoreSys, tmp_path: Path): for file in ("en.json", "es.json"): write_json_or_yaml_file( tmp_path / "translations" / file, - {"configuration": {"test": {"name": "test", "test": "test"}}}, + { + "configuration": { + "test": { + "name": "test", + "description": "test", + "test": "test", + "fields": {"test2": {"name": "test2"}}, + } + } + }, ) for file in ("no.yaml", "de.yaml"): @@ -39,6 +48,18 @@ def test_loading_traslations(coresys: CoreSys, tmp_path: Path): assert translations["no"]["configuration"]["test"]["name"] == "test" assert translations["de"]["configuration"]["test"]["name"] == "test" + assert translations["en"]["configuration"]["test"]["description"] == "test" + assert translations["es"]["configuration"]["test"]["description"] == "test" + + assert ( + translations["en"]["configuration"]["test"]["fields"]["test2"]["name"] + == "test2" + ) + assert ( + translations["es"]["configuration"]["test"]["fields"]["test2"]["name"] + == "test2" + ) + assert "test" not in translations["en"]["configuration"]["test"] assert translations["no"]["network"]["80/tcp"] == "Webserver port"