commit:     6fe1e8ceee67f8d91ac94c319c603b1955109267
Author:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sun Jan  3 18:28:58 2016 +0000
Commit:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Jan 30 07:50:17 2016 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=6fe1e8ce

repoman: Complete KeywordChecks migration

 pym/repoman/modules/scan/keywords/keywords.py | 47 ++++++++++++---------------
 pym/repoman/scanner.py                        |  3 +-
 2 files changed, 23 insertions(+), 27 deletions(-)

diff --git a/pym/repoman/modules/scan/keywords/keywords.py 
b/pym/repoman/modules/scan/keywords/keywords.py
index 484d7d5..e34c891 100644
--- a/pym/repoman/modules/scan/keywords/keywords.py
+++ b/pym/repoman/modules/scan/keywords/keywords.py
@@ -19,6 +19,8 @@ class KeywordChecks(ScanBase):
                super(KeywordChecks, self).__init__(**kwargs)
                self.qatracker = kwargs.get('qatracker')
                self.options = kwargs.get('options')
+               self.repo_metadata = kwargs.get('repo_metadata')
+               self.profiles = kwargs.get('profiles')
                self.slot_keywords = {}
 
        def prepare(self, **kwargs):
@@ -45,21 +47,19 @@ class KeywordChecks(ScanBase):
                live_ebuild = kwargs.get('live_ebuild')
                if not self.options.straight_to_stable:
                        self._checkAddedWithStableKeywords(
-                               package, ebuild, y_ebuild, keywords, changed)
+                               xpkg, ebuild, y_ebuild, ebuild.keywords, 
changed)
 
-               self._checkForDroppedKeywords(
-                       pkg, ebuild, ebuild_archs, live_ebuild)
+               self._checkForDroppedKeywords(pkg, ebuild, ebuild.archs, 
live_ebuild)
 
-               self._checkForInvalidKeywords(
-                       pkg, package, y_ebuild, kwlist, profiles)
+               self._checkForInvalidKeywords(ebuild, xpkg, y_ebuild)
 
-               self._checkForMaskLikeKeywords(
-                       package, y_ebuild, keywords, kwlist)
+               self._checkForMaskLikeKeywords(xpkg, y_ebuild, ebuild.keywords)
 
-               self.slot_keywords[pkg.slot].update(ebuild_archs)
+               self.slot_keywords[pkg.slot].update(ebuild.archs)
                return {'continue': False}
 
-       def _isKeywordStable(self, keyword):
+       @staticmethod
+       def _isKeywordStable(keyword):
                return not keyword.startswith("~") and not 
keyword.startswith("-")
 
        def _checkAddedWithStableKeywords(
@@ -88,9 +88,8 @@ class KeywordChecks(ScanBase):
                                                ebuild.relative_path,
                                                " 
".join(sorted(dropped_keywords))))
 
-       def _checkForInvalidKeywords(
-               self, pkg, package, y_ebuild, kwlist, profiles):
-               myuse = pkg._metadata["KEYWORDS"].split()
+       def _checkForInvalidKeywords(self, ebuild, xpkg, y_ebuild):
+               myuse = ebuild.keywords
 
                for mykey in myuse:
                        if mykey not in ("-*", "*", "~*"):
@@ -99,20 +98,16 @@ class KeywordChecks(ScanBase):
                                if not self._isKeywordStable(myskey[:1]):
                                        myskey = myskey[1:]
 
-                               if myskey not in kwlist:
+                               if myskey not in self.repo_metadata['kwlist']:
+                                       
self.qatracker.add_error("KEYWORDS.invalid",
+                                               "%s/%s.ebuild: %s" % (xpkg, 
y_ebuild, mykey))
+                               elif myskey not in self.profiles:
                                        self.qatracker.add_error(
                                                "KEYWORDS.invalid",
-                                               "%s/%s.ebuild: %s" % (
-                                                       package, y_ebuild, 
mykey))
-                               elif myskey not in profiles:
-                                       self.qatracker.add_error(
-                                               "KEYWORDS.invalid",
-                                               "%s/%s.ebuild: %s (profile 
invalid)" % (
-                                                       package, y_ebuild, 
mykey))
-
-       def _checkForMaskLikeKeywords(
-               self, package, y_ebuild, keywords, kwlist):
+                                               "%s/%s.ebuild: %s (profile 
invalid)"
+                                                       % (xpkg, y_ebuild, 
mykey))
 
+       def _checkForMaskLikeKeywords(self, xpkg, y_ebuild, keywords):
                # KEYWORDS="-*" is a stupid replacement for package.mask
                # and screws general KEYWORDS semantics
                if "-*" in keywords:
@@ -121,12 +116,12 @@ class KeywordChecks(ScanBase):
                        for kw in keywords:
                                if kw[0] == "~":
                                        kw = kw[1:]
-                               if kw in kwlist:
+                               if kw in self.repo_metadata['kwlist']:
                                        haskeyword = True
 
                        if not haskeyword:
-                               self.qatracker.add_error(
-                                       "KEYWORDS.stupid", package + "/" + 
y_ebuild + ".ebuild")
+                               self.qatracker.add_error("KEYWORDS.stupid",
+                                       "%s/%s.ebuild" % (xpkg, y_ebuild))
 
        @property
        def runInPkgs(self):

diff --git a/pym/repoman/scanner.py b/pym/repoman/scanner.py
index 27c1be9..f0a4bef 100644
--- a/pym/repoman/scanner.py
+++ b/pym/repoman/scanner.py
@@ -206,6 +206,7 @@ class Scanner(object):
                        "uselist": uselist,
                        "checks": self.checks,
                        "repo_metadata": self.repo_metadata,
+                       "profiles": self.profiles,
                }
                # initialize the plugin checks here
                self.modules = {}
@@ -302,7 +303,7 @@ class Scanner(object):
                        for mod in [('ebuild', 'Ebuild'), ('live', 
'LiveEclassChecks'),
                                ('eapi', 'EAPIChecks'), ('ebuild_metadata', 
'EbuildMetadata'),
                                ('thirdpartymirrors', 'ThirdPartyMirrors'),
-                               ('description', 'DescriptionChecks'),
+                               ('description', 'DescriptionChecks'), (None, 
'KeywordChecks'),
                                ]:
                                if mod[0]:
                                        mod_class = 
MODULE_CONTROLLER.get_class(mod[0])

Reply via email to