aboutsummaryrefslogtreecommitdiff
path: root/repos/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'repos/__init__.py')
-rw-r--r--repos/__init__.py28
1 files changed, 28 insertions, 0 deletions
diff --git a/repos/__init__.py b/repos/__init__.py
new file mode 100644
index 0000000..0f71dd1
--- /dev/null
+++ b/repos/__init__.py
@@ -0,0 +1,28 @@
+from typing import Mapping, List, Any
+
+from . import alpine_linux
+from .base import Repository
+
+__all__ = [
+ 'get_versions',
+]
+
+def repos_from(module):
+ for exported in module.__all__:
+ attr = getattr(module, exported)
+ if isinstance(attr, Repository):
+ yield attr
+
+all_repos: List[Repository] = [
+ *repos_from(alpine_linux),
+]
+
+def get_versions(package: str) -> Mapping[str, Mapping[str, str]]:
+ result = dict()
+ for repo in all_repos:
+ repo_versions = repo.get_versions()
+ if package in repo_versions:
+ if repo.family not in result:
+ result[repo.family] = dict()
+ result[repo.family][repo.repo] = repo_versions[package]
+ return result