From 1b7dd6c6031d57eda2773fae0de660bfb9427802 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 17 Feb 2020 08:44:36 -0800 Subject: [PATCH] Add icons to scripts (#31899) --- homeassistant/components/script/__init__.py | 21 ++++++++++++++++----- tests/components/script/test_init.py | 21 +++++++++++++++++++++ 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/script/__init__.py b/homeassistant/components/script/__init__.py index 44684656372..0a7b8596248 100644 --- a/homeassistant/components/script/__init__.py +++ b/homeassistant/components/script/__init__.py @@ -9,6 +9,7 @@ from homeassistant.const import ( ATTR_ENTITY_ID, ATTR_NAME, CONF_ALIAS, + CONF_ICON, EVENT_SCRIPT_STARTED, SERVICE_RELOAD, SERVICE_TOGGLE, @@ -42,7 +43,8 @@ ENTITY_ID_FORMAT = DOMAIN + ".{}" SCRIPT_ENTRY_SCHEMA = vol.Schema( { - CONF_ALIAS: cv.string, + vol.Optional(CONF_ALIAS): cv.string, + vol.Optional(CONF_ICON): cv.icon, vol.Required(CONF_SEQUENCE): cv.SCRIPT_SCHEMA, vol.Optional(CONF_DESCRIPTION, default=""): cv.string, vol.Optional(CONF_FIELDS, default={}): { @@ -207,9 +209,15 @@ async def _async_process_config(hass, config, component): scripts = [] for object_id, cfg in config.get(DOMAIN, {}).items(): - alias = cfg.get(CONF_ALIAS, object_id) - script = ScriptEntity(hass, object_id, alias, cfg[CONF_SEQUENCE]) - scripts.append(script) + scripts.append( + ScriptEntity( + hass, + object_id, + cfg.get(CONF_ALIAS, object_id), + cfg.get(CONF_ICON), + cfg[CONF_SEQUENCE], + ) + ) hass.services.async_register( DOMAIN, object_id, service_handler, schema=SCRIPT_SERVICE_SCHEMA ) @@ -227,9 +235,12 @@ async def _async_process_config(hass, config, component): class ScriptEntity(ToggleEntity): """Representation of a script entity.""" - def __init__(self, hass, object_id, name, sequence): + icon = None + + def __init__(self, hass, object_id, name, icon, sequence): """Initialize the script.""" self.object_id = object_id + self.icon = icon self.entity_id = ENTITY_ID_FORMAT.format(object_id) self.script = Script(hass, sequence, name, self.async_update_ha_state) diff --git a/tests/components/script/test_init.py b/tests/components/script/test_init.py index 9d64f5298f4..dbaa5e6e117 100644 --- a/tests/components/script/test_init.py +++ b/tests/components/script/test_init.py @@ -446,3 +446,24 @@ async def test_extraction_functions(hass): "device-in-both", "device-in-last", } + + +async def test_config(hass): + """Test passing info in config.""" + assert await async_setup_component( + hass, + "script", + { + "script": { + "test_script": { + "alias": "Script Name", + "icon": "mdi:party", + "sequence": [], + } + } + }, + ) + + test_script = hass.states.get("script.test_script") + assert test_script.name == "Script Name" + assert test_script.attributes["icon"] == "mdi:party"