From 9f8e683ae39432d9d17c0ed6e990fb3f995bf92e Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 25 Apr 2021 03:13:22 -0700 Subject: [PATCH] Ask for IoT class during scaffold (#49647) Co-authored-by: Milan Meulemans Co-authored-by: Franck Nijhof --- script/scaffold/__main__.py | 2 +- script/scaffold/gather_info.py | 18 ++++++++++++++++++ script/scaffold/generate.py | 4 ++-- script/scaffold/model.py | 1 + .../integration/__init__.py | 2 +- 5 files changed, 23 insertions(+), 4 deletions(-) diff --git a/script/scaffold/__main__.py b/script/scaffold/__main__.py index 5a6645109fd..0504cdb8b37 100644 --- a/script/scaffold/__main__.py +++ b/script/scaffold/__main__.py @@ -99,7 +99,7 @@ def main(): if args.develop: print("Running tests") print(f"$ pytest -vvv tests/components/{info.domain}") - subprocess.run(["pytest", "-vvv", "tests/components/{info.domain}"]) + subprocess.run(["pytest", "-vvv", f"tests/components/{info.domain}"]) print() docs.print_relevant_docs(args.template, info) diff --git a/script/scaffold/gather_info.py b/script/scaffold/gather_info.py index fda5081e7c3..8442650dce4 100644 --- a/script/scaffold/gather_info.py +++ b/script/scaffold/gather_info.py @@ -2,6 +2,7 @@ import json from homeassistant.util import slugify +from script.hassfest.manifest import SUPPORTED_IOT_CLASSES from .const import COMPONENT_DIR from .error import ExitApp @@ -46,6 +47,7 @@ def gather_info(arguments) -> Info: "codeowner": "@developer", "requirement": "aiodevelop==1.2.3", "oauth2": True, + "iot_class": "local_polling", } ) else: @@ -86,6 +88,22 @@ def gather_new_integration(determine_auth: bool) -> Info: ] ], }, + "iot_class": { + "prompt": ( + f"""How will your integration gather data? + +Valid values are {', '.join(SUPPORTED_IOT_CLASSES)} + +More info @ https://developers.home-assistant.io/docs/creating_integration_manifest#iot-class +""" + ), + "validators": [ + [ + f"You need to pick one of {', '.join(SUPPORTED_IOT_CLASSES)}", + lambda value: value in SUPPORTED_IOT_CLASSES, + ] + ], + }, } if determine_auth: diff --git a/script/scaffold/generate.py b/script/scaffold/generate.py index 10de17e45ee..7ebc364d7ee 100644 --- a/script/scaffold/generate.py +++ b/script/scaffold/generate.py @@ -67,10 +67,10 @@ def _append(path: Path, text): path.write_text(path.read_text() + text) -def _custom_tasks(template, info) -> None: +def _custom_tasks(template, info: Info) -> None: """Handle custom tasks for templates.""" if template == "integration": - changes = {"codeowners": [info.codeowner]} + changes = {"codeowners": [info.codeowner], "iot_class": info.iot_class} if info.requirement: changes["requirements"] = [info.requirement] diff --git a/script/scaffold/model.py b/script/scaffold/model.py index f9c71072a1b..93801f973ea 100644 --- a/script/scaffold/model.py +++ b/script/scaffold/model.py @@ -18,6 +18,7 @@ class Info: is_new: bool = attr.ib() codeowner: str = attr.ib(default=None) requirement: str = attr.ib(default=None) + iot_class: str = attr.ib(default=None) authentication: str = attr.ib(default=None) discoverable: str = attr.ib(default=None) oauth2: str = attr.ib(default=None) diff --git a/script/scaffold/templates/config_flow_discovery/integration/__init__.py b/script/scaffold/templates/config_flow_discovery/integration/__init__.py index 6c187d1dafe..773bf594838 100644 --- a/script/scaffold/templates/config_flow_discovery/integration/__init__.py +++ b/script/scaffold/templates/config_flow_discovery/integration/__init__.py @@ -10,7 +10,7 @@ from .const import DOMAIN # TODO List the platforms that you want to support. # For your initial PR, limit it to 1 platform. -PLATFORMS = ["light"] +PLATFORMS = ["binary_sensor"] async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: