async def load_known_repositories(self): """Load known repositories.""" self.logger.info("Loading known repositories") repositories = await self.get_repositories() for item in await get_default_repos_lists(self.session, self.configuration.token, "removed"): removed = get_removed(item["repository"]) removed.reason = item.get("reason") removed.link = item.get("link") removed.removal_type = item.get("removal_type") for category in repositories: for repo in repositories[category]: if is_removed(repo): continue repository = self.get_by_name(repo) if repository is not None: if str(repository.data.id) not in self.common.default: self.common.default.append(str(repository.data.id)) else: continue continue self.queue.add(self.factory.safe_register(repo, category))
async def load_known_repositories(self): """Load known repositories.""" self.logger.info("Loading known repositories") repositories = await self.get_repositories() for item in await get_default_repos_lists( self.session, self.configuration.token, "removed" ): removed = get_removed(item["repository"]) removed.reason = item.get("reason") removed.link = item.get("link") removed.removal_type = item.get("removal_type") for category in repositories: for repo in repositories[category]: if is_removed(repo): continue if self.is_known(repo): continue self.queue.add(self.factory.safe_register(repo, category))
def test_is_removed(): repo = "test/test" assert not is_removed(repo)
async def common_update_data(repository): """Common update data.""" hacs = get_hacs() try: repository_object = await get_repository(hacs.session, hacs.configuration.token, repository.data.full_name) repository.repository_object = repository_object repository.data.update_data(repository_object.attributes) except (AIOGitHubException, HacsException) as exception: if not hacs.system.status.startup: repository.logger.error(exception) repository.validate.errors.append("Repository does not exist.") raise HacsException(exception) # Make sure the repository is not archived. if repository.data.archived: repository.validate.errors.append("Repository is archived.") raise HacsException("Repository is archived.") # Make sure the repository is not in the blacklist. if is_removed(repository.data.full_name): repository.validate.errors.append("Repository is in the blacklist.") raise HacsException("Repository is in the blacklist.") # Get releases. try: releases = await get_releases( repository.repository_object, repository.status.show_beta, hacs.configuration.release_limit, ) if releases: repository.releases.releases = True repository.releases.objects = releases repository.releases.published_tags = [ x.tag_name for x in releases if not x.draft ] repository.versions.available = next(iter(releases)).tag_name for release in releases: if release.tag_name == repository.ref: assets = release.assets if assets: downloads = next( iter(assets)).attributes.get("download_count") repository.releases.downloads = downloads except (AIOGitHubException, HacsException): repository.releases.releases = False repository.ref = version_to_install(repository) repository.logger.debug( f"Running checks against {repository.ref.replace('tags/', '')}") try: repository.tree = await get_tree(repository.repository_object, repository.ref) if not repository.tree: raise HacsException("No files in tree") repository.treefiles = [] for treefile in repository.tree: repository.treefiles.append(treefile.full_path) except (AIOGitHubException, HacsException) as exception: if not hacs.system.status.startup: repository.logger.error(exception) raise HacsException(exception)