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