| # Copyright 2014-2019 Gentoo Authors |
| # Distributed under the terms of the GNU General Public License v2 |
| |
| import os |
| |
| from collections import OrderedDict |
| |
| from portage.module import Modules |
| from portage.sync.controller import SyncManager |
| from portage.sync.config_checks import check_type |
| |
| _SUBMODULE_PATH_MAP = OrderedDict( |
| [ |
| ("glsa", ("metadata/glsa",)), |
| ("news", ("metadata/news",)), |
| ("profiles", ("metadata/layout.conf", "profiles")), |
| ] |
| ) |
| |
| path = os.path.join(os.path.dirname(__file__), "modules") |
| # initial development debug info |
| # print("module path:", path) |
| |
| module_controller = Modules(path=path, namepath="portage.sync.modules") |
| |
| # initial development debug info |
| # print(module_controller.module_names) |
| module_names = module_controller.module_names[:] |
| |
| |
| def module_specific_options(repo): |
| """Get the authorized module specific options set for |
| the repos.conf settings for the repo""" |
| global module_controller |
| |
| if repo.sync_type: |
| try: |
| return frozenset( |
| module_controller.modules[repo.sync_type]["module_specific_options"] |
| ) |
| except KeyError: |
| pass |
| return frozenset() |
| |
| |
| def validate_config(repo, logger): |
| """Validate the repos.conf settings for the repo""" |
| global module_names, module_controller |
| if not check_type(repo, logger, module_names): |
| return False |
| |
| # print(repo) |
| if repo.sync_type: |
| validated = module_controller.modules[repo.sync_type]["validate_config"] |
| return validated(repo, logger).repo_checks() |
| return True |