Add HACS, Themes
This commit is contained in:
64
custom_components/hacs/tasks/update_default_repositories.py
Normal file
64
custom_components/hacs/tasks/update_default_repositories.py
Normal file
@@ -0,0 +1,64 @@
|
||||
""""Hacs base setup task."""
|
||||
from __future__ import annotations
|
||||
|
||||
import asyncio
|
||||
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 default task."""
|
||||
|
||||
schedule = timedelta(hours=3)
|
||||
stages = [HacsStage.STARTUP]
|
||||
|
||||
async def async_execute(self) -> None:
|
||||
"""Execute the task."""
|
||||
self.hacs.log.info("Loading known repositories")
|
||||
|
||||
await asyncio.gather(
|
||||
*[
|
||||
self.async_get_category_repositories(HacsCategory(category))
|
||||
for category in self.hacs.common.categories or []
|
||||
]
|
||||
)
|
||||
|
||||
async def async_get_category_repositories(self, category: HacsCategory) -> None:
|
||||
"""Get repositories from category."""
|
||||
try:
|
||||
repositories = await self.hacs.async_github_get_hacs_default_file(category)
|
||||
except HacsException:
|
||||
return
|
||||
|
||||
for repo in repositories:
|
||||
if self.hacs.common.renamed_repositories.get(repo):
|
||||
repo = self.hacs.common.renamed_repositories[repo]
|
||||
if self.hacs.repositories.is_removed(repo):
|
||||
continue
|
||||
if repo in self.hacs.common.archived_repositories:
|
||||
continue
|
||||
repository = self.hacs.repositories.get_by_full_name(repo)
|
||||
if repository is not None:
|
||||
self.hacs.repositories.mark_default(repository)
|
||||
if self.hacs.status.new and self.hacs.configuration.dev:
|
||||
# Force update for new installations
|
||||
self.hacs.queue.add(repository.common_update())
|
||||
continue
|
||||
self.hacs.queue.add(
|
||||
self.hacs.async_register_repository(
|
||||
repository_full_name=repo,
|
||||
category=category,
|
||||
default=True,
|
||||
)
|
||||
)
|
||||
Reference in New Issue
Block a user