Files
home-assistant/custom_components/hacs/tasks/update_removed_repositories.py
2022-05-04 10:50:54 -07:00

61 lines
1.9 KiB
Python

""""Hacs base setup task."""
from __future__ import annotations
from datetime import timedelta
from homeassistant.core import HomeAssistant
from ..base import HacsBase
from ..enums import HacsCategory, HacsStage
from ..exceptions import HacsException
from .base import HacsTask
async def async_setup_task(hacs: HacsBase, hass: HomeAssistant) -> Task:
"""Set up this task."""
return Task(hacs=hacs, hass=hass)
class Task(HacsTask):
"""Hacs update removed task."""
schedule = timedelta(hours=2)
stages = [HacsStage.STARTUP]
async def async_execute(self) -> None:
"""Execute the task."""
need_to_save = False
self.hacs.log.info("Loading removed repositories")
try:
removed_repositories = await self.hacs.async_github_get_hacs_default_file(
HacsCategory.REMOVED
)
except HacsException:
return
for item in removed_repositories:
removed = self.hacs.repositories.removed_repository(item["repository"])
removed.update_data(item)
for removed in self.hacs.repositories.list_removed:
if (repository := self.hacs.repositories.get_by_full_name(removed.repository)) is None:
continue
if repository.data.full_name in self.hacs.common.ignored_repositories:
continue
if repository.data.installed and removed.removal_type != "critical":
self.hacs.log.warning(
"You have '%s' installed with HACS "
"this repository has been removed from HACS, please consider removing it. "
"Removal reason (%s)",
repository.data.full_name,
removed.reason,
)
else:
need_to_save = True
repository.remove()
if need_to_save:
await self.hacs.data.async_write()