commit:     0187e2e6559e0d2e66b9c27c11228400024199a6
Author:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sun Jan  3 23:10:48 2016 +0000
Commit:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Wed Jan  6 04:08:23 2016 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=0187e2e6

repoman: Migrate RestrictChecks to a plugin module

 pym/repoman/modules/scan/metadata/__init__.py      |  8 ++++++
 .../scan/metadata}/restrict.py                     | 29 +++++++++++++++-------
 pym/repoman/scanner.py                             |  9 +------
 3 files changed, 29 insertions(+), 17 deletions(-)

diff --git a/pym/repoman/modules/scan/metadata/__init__.py 
b/pym/repoman/modules/scan/metadata/__init__.py
index ed0c59d..6ab44f6 100644
--- a/pym/repoman/modules/scan/metadata/__init__.py
+++ b/pym/repoman/modules/scan/metadata/__init__.py
@@ -42,6 +42,14 @@ module_spec = {
                        'func_desc': {
                        },
                },
+               'restrict-metadata': {
+                       'name': "restrict",
+                       'class': "RestrictChecks",
+                       'description': doc,
+                       'functions': ['check'],
+                       'func_desc': {
+                       },
+               },
        }
 }
 

diff --git a/pym/repoman/checks/ebuilds/variables/restrict.py 
b/pym/repoman/modules/scan/metadata/restrict.py
similarity index 54%
rename from pym/repoman/checks/ebuilds/variables/restrict.py
rename to pym/repoman/modules/scan/metadata/restrict.py
index 215b792..93ca298 100644
--- a/pym/repoman/checks/ebuilds/variables/restrict.py
+++ b/pym/repoman/modules/scan/metadata/restrict.py
@@ -12,21 +12,23 @@ from repoman.qa_data import valid_restrict
 class RestrictChecks(object):
        '''Perform checks on the RESTRICT variable.'''
 
-       def __init__(self, qatracker):
+       def __init__(self, **kwargs):
                '''
                @param qatracker: QATracker instance
                '''
-               self.qatracker = qatracker
+               self.qatracker = kwargs.get('qatracker')
 
-       def check(self, pkg, package, ebuild, y_ebuild):
+       def check(self, **kwargs):
+               xpkg = kwargs.get('xpkg')
+               ebuild = kwargs.get('ebuild')
+               y_ebuild = kwargs.get('y_ebuild')
                myrestrict = None
 
                try:
                        myrestrict = portage.dep.use_reduce(
-                               pkg._metadata["RESTRICT"], matchall=1, 
flat=True)
+                               ebuild.metadata["RESTRICT"], matchall=1, 
flat=True)
                except portage.exception.InvalidDependString as e:
-                       self. qatracker.add_error(
-                               "RESTRICT.syntax",
+                       self.qatracker.add_error("RESTRICT.syntax",
                                "%s: RESTRICT: %s" % (ebuild.relative_path, e))
                        del e
 
@@ -36,6 +38,15 @@ class RestrictChecks(object):
 
                        if mybadrestrict:
                                for mybad in mybadrestrict:
-                                       self.qatracker.add_error(
-                                               "RESTRICT.invalid",
-                                               package + "/" + y_ebuild + 
".ebuild: %s" % mybad)
+                                       
self.qatracker.add_error("RESTRICT.invalid",
+                                               "%s/%s.ebuild: %s" % (xpkg, 
y_ebuild, mybad))
+               return {'continue': False}
+
+       @property
+       def runInPkgs(self):
+               return (False, [])
+
+       @property
+       def runInEbuilds(self):
+               return (True, [self.check])
+

diff --git a/pym/repoman/scanner.py b/pym/repoman/scanner.py
index ea1869f..457bdcb 100644
--- a/pym/repoman/scanner.py
+++ b/pym/repoman/scanner.py
@@ -18,7 +18,6 @@ from portage import _unicode_encode
 from portage.dep import Atom
 from portage.output import green
 from repoman.checks.ebuilds.checks import run_checks
-from repoman.checks.ebuilds.variables.restrict import RestrictChecks
 from repoman.modules.commit import repochecks
 from repoman.profile import check_profiles, dev_profile_keywords, setup_profile
 from repoman.repos import repo_metadata
@@ -210,10 +209,6 @@ class Scanner(object):
                        print("Initializing class name:", mod_class.__name__)
                        self.modules[mod_class.__name__] = 
mod_class(**self.kwargs)
 
-               # initialize our checks classes here before the big xpkg loop
-               self.restrictcheck = RestrictChecks(self.qatracker)
-
-
        def scan_pkgs(self, can_force):
                dynamic_data = {'can_force': can_force}
                for xpkg in self.effective_scanlist:
@@ -299,7 +294,7 @@ class Scanner(object):
                                ('description', 'DescriptionChecks'), (None, 
'KeywordChecks'),
                                ('arches', 'ArchChecks'), ('depend', 
'DependChecks'),
                                ('use_flags', 'USEFlagChecks'), ('ruby', 
'RubyEclassChecks'),
-                               ('license', 'LicenseChecks'),
+                               ('license', 'LicenseChecks'), ('restrict', 
'RestrictChecks'),
                                ]:
                                if mod[0]:
                                        mod_class = 
MODULE_CONTROLLER.get_class(mod[0])
@@ -330,8 +325,6 @@ class Scanner(object):
 
                        print("**** finished plugin loop, continuing...")
 
-                       self.restrictcheck.check(dynamic_data['pkg'], xpkg, 
dynamic_data['ebuild'], y_ebuild)
-
                        # Syntax Checks
                        if not self.vcs_settings.vcs_preserves_mtime:
                                if dynamic_data['ebuild'].ebuild_path not in 
self.changed.new_ebuilds and \

Reply via email to