updating to latest
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
"""Register a repository."""
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
from aiogithubapi import AIOGitHubAPIException
|
||||
|
||||
from custom_components.hacs.exceptions import (
|
||||
HacsException,
|
||||
HacsExpectedException,
|
||||
HacsRepositoryExistException,
|
||||
)
|
||||
from custom_components.hacs.share import get_hacs
|
||||
|
||||
from ...repositories import RERPOSITORY_CLASSES
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from ..classes.repository import HacsRepository
|
||||
|
||||
# @concurrent(15, 5)
|
||||
async def register_repository(full_name, category, check=True, ref=None):
|
||||
"""Register a repository."""
|
||||
hacs = get_hacs()
|
||||
|
||||
if full_name in hacs.common.skip:
|
||||
if full_name != "hacs/integration":
|
||||
raise HacsExpectedException(f"Skipping {full_name}")
|
||||
|
||||
if category not in RERPOSITORY_CLASSES:
|
||||
raise HacsException(f"{category} is not a valid repository category.")
|
||||
|
||||
repository: HacsRepository = RERPOSITORY_CLASSES[category](full_name)
|
||||
if check:
|
||||
try:
|
||||
await repository.async_registration(ref)
|
||||
if hacs.status.new:
|
||||
repository.data.new = False
|
||||
if repository.validate.errors:
|
||||
hacs.common.skip.append(repository.data.full_name)
|
||||
if not hacs.status.startup:
|
||||
hacs.log.error("Validation for %s failed.", full_name)
|
||||
if hacs.system.action:
|
||||
raise HacsException(f"::error:: Validation for {full_name} failed.")
|
||||
return repository.validate.errors
|
||||
if hacs.system.action:
|
||||
repository.logger.info("%s Validation completed", repository)
|
||||
else:
|
||||
repository.logger.info("%s Registration completed", repository)
|
||||
except HacsRepositoryExistException:
|
||||
return
|
||||
except AIOGitHubAPIException as exception:
|
||||
hacs.common.skip.append(repository.data.full_name)
|
||||
raise HacsException(f"Validation for {full_name} failed with {exception}.") from None
|
||||
|
||||
if str(repository.data.id) != "0" and (exists := hacs.get_by_id(repository.data.id)):
|
||||
hacs.async_remove_repository(exists)
|
||||
|
||||
else:
|
||||
if hacs.hass is not None and ((check and repository.data.new) or hacs.status.new):
|
||||
hacs.hass.bus.async_fire(
|
||||
"hacs/repository",
|
||||
{
|
||||
"action": "registration",
|
||||
"repository": repository.data.full_name,
|
||||
"repository_id": repository.data.id,
|
||||
},
|
||||
)
|
||||
hacs.async_add_repository(repository)
|
||||
Reference in New Issue
Block a user