From 7c7a86242e138db4a5b5059872b5860725f21bca Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 21 Feb 2022 23:42:57 -0800 Subject: [PATCH] Allow supported brands in manifests (#67015) --- script/hassfest/manifest.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/script/hassfest/manifest.py b/script/hassfest/manifest.py index d146621b416..64239a7fae1 100644 --- a/script/hassfest/manifest.py +++ b/script/hassfest/manifest.py @@ -248,12 +248,14 @@ MANIFEST_SCHEMA = vol.Schema( vol.Optional("loggers"): [str], vol.Optional("disabled"): str, vol.Optional("iot_class"): vol.In(SUPPORTED_IOT_CLASSES), + vol.Optional("supported_brands"): vol.Schema({str: str}), } ) CUSTOM_INTEGRATION_MANIFEST_SCHEMA = MANIFEST_SCHEMA.extend( { vol.Optional("version"): vol.All(str, verify_version), + vol.Remove("supported_brands"): dict, } ) @@ -307,6 +309,13 @@ def validate_manifest(integration: Integration, core_components_dir: Path) -> No ): integration.add_error("manifest", "Domain is missing an IoT Class") + for domain, _name in integration.manifest.get("supported_brands", {}).items(): + if (core_components_dir / domain).exists(): + integration.add_warning( + "manifest", + f"Supported brand domain {domain} collides with built-in core integration", + ) + if not integration.core: validate_version(integration)