Add HACS, Themes
This commit is contained in:
60
custom_components/hacs/tasks/update_removed_repositories.py
Normal file
60
custom_components/hacs/tasks/update_removed_repositories.py
Normal file
@@ -0,0 +1,60 @@
|
||||
""""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()
|
||||
Reference in New Issue
Block a user