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

52 lines
1.9 KiB
Python

"""Starting setup task: load HACS repository."""
from __future__ import annotations
from homeassistant.core import HomeAssistant
from ..base import HacsBase
from ..enums import HacsCategory, HacsDisabledReason, HacsGitHubRepo, 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):
"""Load HACS repositroy."""
stages = [HacsStage.STARTUP]
async def async_execute(self) -> None:
"""Execute the task."""
try:
repository = self.hacs.repositories.get_by_full_name(HacsGitHubRepo.INTEGRATION)
if repository is None:
await self.hacs.async_register_repository(
repository_full_name=HacsGitHubRepo.INTEGRATION,
category=HacsCategory.INTEGRATION,
default=True,
)
repository = self.hacs.repositories.get_by_full_name(HacsGitHubRepo.INTEGRATION)
if repository is None:
raise HacsException("Unknown error")
repository.data.installed = True
repository.data.installed_version = self.hacs.integration.version
repository.data.new = False
repository.data.releases = True
self.hacs.repository = repository.repository_object
self.hacs.repositories.mark_default(repository)
except HacsException as exception:
if "403" in f"{exception}":
self.task_logger(
self.hacs.log.critical,
"GitHub API is ratelimited, or the token is wrong.",
)
else:
self.task_logger(self.hacs.log.critical, f"[{exception}] - Could not load HACS!")
self.hacs.disable_hacs(HacsDisabledReason.LOAD_HACS)