From 6433bf4d77171f471e7b1c7bdfa59d2f2e1e45f7 Mon Sep 17 00:00:00 2001 From: Aidan Timson Date: Tue, 31 Oct 2023 18:08:47 +0000 Subject: [PATCH] Create update component for System Bridge (#102966) * Create update component for System Bridge * Add --- .coveragerc | 1 + .../components/system_bridge/__init__.py | 1 + .../components/system_bridge/update.py | 65 +++++++++++++++++++ 3 files changed, 67 insertions(+) create mode 100644 homeassistant/components/system_bridge/update.py diff --git a/.coveragerc b/.coveragerc index 5ef7ece3bd8..2c9759b3c76 100644 --- a/.coveragerc +++ b/.coveragerc @@ -1294,6 +1294,7 @@ omit = homeassistant/components/system_bridge/media_player.py homeassistant/components/system_bridge/notify.py homeassistant/components/system_bridge/sensor.py + homeassistant/components/system_bridge/update.py homeassistant/components/systemmonitor/sensor.py homeassistant/components/tado/__init__.py homeassistant/components/tado/binary_sensor.py diff --git a/homeassistant/components/system_bridge/__init__.py b/homeassistant/components/system_bridge/__init__.py index 90a6f0659ef..b096a788906 100644 --- a/homeassistant/components/system_bridge/__init__.py +++ b/homeassistant/components/system_bridge/__init__.py @@ -49,6 +49,7 @@ PLATFORMS = [ Platform.MEDIA_PLAYER, Platform.NOTIFY, Platform.SENSOR, + Platform.UPDATE, ] CONF_BRIDGE = "bridge" diff --git a/homeassistant/components/system_bridge/update.py b/homeassistant/components/system_bridge/update.py new file mode 100644 index 00000000000..1d011b08f72 --- /dev/null +++ b/homeassistant/components/system_bridge/update.py @@ -0,0 +1,65 @@ +"""Support for System Bridge updates.""" +from __future__ import annotations + +from homeassistant.components.update import UpdateEntity +from homeassistant.config_entries import ConfigEntry +from homeassistant.const import CONF_PORT +from homeassistant.core import HomeAssistant +from homeassistant.helpers.entity_platform import AddEntitiesCallback + +from . import SystemBridgeEntity +from .const import DOMAIN +from .coordinator import SystemBridgeDataUpdateCoordinator + + +async def async_setup_entry( + hass: HomeAssistant, + entry: ConfigEntry, + async_add_entities: AddEntitiesCallback, +) -> None: + """Set up System Bridge update based on a config entry.""" + coordinator: SystemBridgeDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id] + + async_add_entities( + [ + SystemBridgeUpdateEntity( + coordinator, + entry.data[CONF_PORT], + ), + ] + ) + + +class SystemBridgeUpdateEntity(SystemBridgeEntity, UpdateEntity): + """Defines a System Bridge update entity.""" + + _attr_has_entity_name = True + _attr_title = "System Bridge" + + def __init__( + self, + coordinator: SystemBridgeDataUpdateCoordinator, + api_port: int, + ) -> None: + """Initialize.""" + super().__init__( + coordinator, + api_port, + "update", + ) + self._attr_name = coordinator.data.system.hostname + + @property + def installed_version(self) -> str | None: + """Version installed and in use.""" + return self.coordinator.data.system.version + + @property + def latest_version(self) -> str | None: + """Latest version available for install.""" + return self.coordinator.data.system.version_latest + + @property + def release_url(self) -> str | None: + """URL to the full release notes of the latest version available.""" + return f"https://github.com/timmo001/system-bridge/releases/tag/{self.coordinator.data.system.version_latest}"