fix topic sync
This commit is contained in:
parent
11b9f2454e
commit
c5be0e1e3d
4 changed files with 26 additions and 6 deletions
|
@ -135,10 +135,15 @@ def main() -> None:
|
|||
if repo.fork or repo.mirror or repo.private:
|
||||
continue
|
||||
|
||||
if repo.name is None:
|
||||
if repo.owner is None or repo.owner.login is None or repo.name is None:
|
||||
logger.fatal("Could not get name of Forgejo repository")
|
||||
exit(1)
|
||||
|
||||
topics_list = from_client.repository.repo_list_topics(
|
||||
owner=repo.owner.login,
|
||||
repo=repo.name,
|
||||
)
|
||||
|
||||
if args.filter is not None:
|
||||
pattern = compile(args.filter)
|
||||
if pattern.search(repo.name) is not None:
|
||||
|
@ -150,7 +155,11 @@ def main() -> None:
|
|||
)
|
||||
|
||||
try:
|
||||
synced_repo = syncer.sync(from_repo=repo, description=description)
|
||||
synced_repo = syncer.sync(
|
||||
from_repo=repo,
|
||||
description=description,
|
||||
topics=topics_list.topics if topics_list.topics is not None else [],
|
||||
)
|
||||
except SyncError as error:
|
||||
logger.fatal("Syncing failed: %s", error)
|
||||
exit(2)
|
||||
|
|
|
@ -37,6 +37,7 @@ class ForgejoSyncer(Syncer):
|
|||
self: Self,
|
||||
from_repo: ForgejoRepository,
|
||||
description: str,
|
||||
topics: list[str],
|
||||
) -> SyncedRepository:
|
||||
assert from_repo.name is not None
|
||||
self.logger.info("Synchronizing %s", from_repo.name)
|
||||
|
@ -79,8 +80,6 @@ class ForgejoSyncer(Syncer):
|
|||
wiki_branch=from_repo.wiki_branch,
|
||||
)
|
||||
|
||||
self.logger.info("Updated Forgejo repository %s", edited_repo.full_name)
|
||||
|
||||
if (
|
||||
edited_repo.owner is None
|
||||
or edited_repo.owner.login is None
|
||||
|
@ -91,6 +90,14 @@ class ForgejoSyncer(Syncer):
|
|||
):
|
||||
raise SyncError("received malformed Forgejo repository")
|
||||
|
||||
self.client.repository.repo_update_topics(
|
||||
owner=edited_repo.owner.login,
|
||||
repo=edited_repo.name,
|
||||
topics=topics,
|
||||
)
|
||||
|
||||
self.logger.info("Updated Forgejo repository %s", edited_repo.full_name)
|
||||
|
||||
return SyncedRepository(
|
||||
new_owner=edited_repo.owner.login,
|
||||
orig_owner=from_repo.owner.login,
|
||||
|
|
|
@ -52,6 +52,7 @@ class GithubSyncer(Syncer):
|
|||
self: Self,
|
||||
from_repo: ForgejoRepository,
|
||||
description: str,
|
||||
topics: list[str],
|
||||
) -> SyncedRepository:
|
||||
if from_repo.name is None:
|
||||
raise SyncError("could not get Forgejo repository name")
|
||||
|
@ -140,7 +141,7 @@ class GithubSyncer(Syncer):
|
|||
|
||||
self.logger.info("Updated GitHub repository %s", repo.full_name)
|
||||
|
||||
repo.replace_topics(from_repo.topics if from_repo.topics is not None else [])
|
||||
repo.replace_topics(topics=topics)
|
||||
|
||||
self.logger.info("Replaced topics on GitHub repository %s", repo.full_name)
|
||||
|
||||
|
|
|
@ -23,7 +23,10 @@ class SyncedRepository:
|
|||
class Syncer(ABC):
|
||||
@abstractmethod
|
||||
def sync(
|
||||
self: Self, from_repo: ForgejoRepository, description: str
|
||||
self: Self,
|
||||
from_repo: ForgejoRepository,
|
||||
description: str,
|
||||
topics: list[str],
|
||||
) -> SyncedRepository:
|
||||
pass
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue