diff options
author | Melody Horn <melody@boringcactus.com> | 2021-03-29 15:55:43 -0600 |
---|---|---|
committer | Melody Horn <melody@boringcactus.com> | 2021-03-29 15:55:43 -0600 |
commit | 7fb9136bf70951a3da3acfedc3d5cff12e7dc12c (patch) | |
tree | dca38efd9801bab4bab7416f03c3d77a3646e329 /repos/__init__.py | |
download | where-packaged-7fb9136bf70951a3da3acfedc3d5cff12e7dc12c.tar.gz where-packaged-7fb9136bf70951a3da3acfedc3d5cff12e7dc12c.zip |
throw together a very rough draft
Diffstat (limited to 'repos/__init__.py')
-rw-r--r-- | repos/__init__.py | 28 |
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 |