diff options
| author | Egor Tensin <egor@tensin.name> | 2026-03-28 16:47:05 +0100 |
|---|---|---|
| committer | Egor Tensin <egor@tensin.name> | 2026-03-28 16:50:59 +0100 |
| commit | cbd949207438a5045a583b120a842c785c1f0894 (patch) | |
| tree | 5e7cdbadd6075c5f935d26cedfd9011f087f3ddd | |
| parent | Merge pull request #14 from egor-tensin/dependabot/pip/tomli-2.4.1 (diff) | |
| download | cgitize-cbd949207438a5045a583b120a842c785c1f0894.tar.gz cgitize-cbd949207438a5045a583b120a842c785c1f0894.zip | |
sort API responses by repository name
| -rw-r--r-- | cgitize/config.py | 36 |
1 files changed, 24 insertions, 12 deletions
diff --git a/cgitize/config.py b/cgitize/config.py index 23b63c1..4de7701 100644 --- a/cgitize/config.py +++ b/cgitize/config.py @@ -66,17 +66,26 @@ class ServiceSection(Section, ABC): self.repositories = RepositoriesSection(self.impl.get('repositories', {})) self.users = UsersSection(self.impl.get('users', {})) - def enum_repositories(self, cfg): - api = self.connect_to_service() + def _enum_explicit_repositories(self, cfg, api): for r in self.repositories.enum_repositories(): r = HostedRepo(r) yield api.convert_repo(api.get_repo(r), cfg, r.dir) + + def _enum_user_repositories(self, cfg, api, user): + for r in api.get_user_repos(user): + r = api.convert_repo(r, cfg, user.dir) + if r.name in user.skip: + continue + yield r + + def _sort_repos(self, repos): + return sorted(repos, key=lambda repo: repo.name) + + def enum_repositories(self, cfg): + api = self.connect_to_service() + yield from self._sort_repos(self._enum_explicit_repositories(cfg, api)) for u in self.users.enum_users(): - for r in api.get_user_repos(u): - r = api.convert_repo(r, cfg, u.dir) - if r.name in u.skip: - continue - yield r + yield from self._sort_repos(self._enum_user_repositories(cfg, api, u)) @abstractmethod def connect_to_service(self): @@ -100,15 +109,18 @@ class GitHubSection(ServiceSection): def url_auth(self): return self.token + def _enum_org_repositories(self, cfg, api, org): + for repo in api.get_org_repos(org): + repo = api.convert_repo(repo, cfg, org.dir) + if repo.name in org.skip: + continue + yield repo + def enum_repositories(self, cfg): yield from super().enum_repositories(cfg) api = self.connect_to_service() for org in self.orgs.enum_orgs(): - for repo in api.get_org_repos(org): - repo = api.convert_repo(repo, cfg, org.dir) - if repo.name in org.skip: - continue - yield repo + yield from self._sort_repos(self._enum_org_repositories(cfg, api, org)) def connect_to_service(self): username = self.username |
