commit:     e0d88104006627f24165ac88ef121025dc844952
Author:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sun Jan  3 10:35:49 2016 +0000
Commit:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Mon Jan 18 19:20:03 2016 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=e0d88104

repoman: Migrate code from _scan_ebuilds to a new EbuildMetadata class and check

 pym/repoman/modules/scan/metadata/__init__.py      | 10 +++++-
 .../modules/scan/metadata/ebuild_metadata.py       | 39 ++++++++++++++++++++++
 pym/repoman/scanner.py                             | 27 +--------------
 3 files changed, 49 insertions(+), 27 deletions(-)

diff --git a/pym/repoman/modules/scan/metadata/__init__.py 
b/pym/repoman/modules/scan/metadata/__init__.py
index 7327ec0..eba6565 100644
--- a/pym/repoman/modules/scan/metadata/__init__.py
+++ b/pym/repoman/modules/scan/metadata/__init__.py
@@ -10,7 +10,7 @@ module_spec = {
        'name': 'metadata',
        'description': doc,
        'provides':{
-               'metadata-module': {
+               'pkg-metadata': {
                        'name': "pkgmetadata",
                        'class': "PkgMetadata",
                        'description': doc,
@@ -18,6 +18,14 @@ module_spec = {
                        'func_desc': {
                        },
                },
+               'ebuild-metadata': {
+                       'name': "ebuild_metadata",
+                       'class': "EbuildMetadata",
+                       'description': doc,
+                       'functions': ['check'],
+                       'func_desc': {
+                       },
+               },
        }
 }
 

diff --git a/pym/repoman/modules/scan/metadata/ebuild_metadata.py 
b/pym/repoman/modules/scan/metadata/ebuild_metadata.py
new file mode 100644
index 0000000..143a40e
--- /dev/null
+++ b/pym/repoman/modules/scan/metadata/ebuild_metadata.py
@@ -0,0 +1,39 @@
+# -*- coding:utf-8 -*-
+
+'''Ebuild Metadata Checks'''
+
+import re
+import sys
+
+if sys.hexversion >= 0x3000000:
+       basestring = str
+
+NON_ASCII_RE = re.compile(r'[^\x00-\x7f]')
+
+
+class EbuildMetadata(object):
+
+       def __init__(self, **kwargs):
+               self.qatracker = kwargs.get('qatracker')
+
+       def check(self, **kwargs):
+               ebuild = kwargs.get('ebuild')
+               for k, v in ebuild.metadata.items():
+                       if not isinstance(v, basestring):
+                               continue
+                       m = NON_ASCII_RE.search(v)
+                       if m is not None:
+                               self.qatracker.add_error(
+                                       "variable.invalidchar",
+                                       "%s: %s variable contains non-ASCII "
+                                       "character at position %s" %
+                                       (ebuild.relative_path, k, m.start() + 
1))
+               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 a8aa2f3..6f3fb53 100644
--- a/pym/repoman/scanner.py
+++ b/pym/repoman/scanner.py
@@ -5,8 +5,6 @@ from __future__ import print_function, unicode_literals
 import copy
 import io
 import logging
-import re
-import sys
 from itertools import chain
 from pprint import pformat
 
@@ -47,18 +45,10 @@ MODULE_CONTROLLER = Modules(path=MODULES_PATH, 
namepath="repoman.modules.scan")
 MODULE_NAMES = MODULE_CONTROLLER.module_names[:]
 
 
-
-if sys.hexversion >= 0x3000000:
-       basestring = str
-
-NON_ASCII_RE = re.compile(r'[^\x00-\x7f]')
-
-
 def sort_key(item):
        return item[2].sub_path
 
 
-
 class Scanner(object):
        '''Primary scan class.  Operates all the small Q/A tests and checks'''
 
@@ -311,7 +301,7 @@ class Scanner(object):
                        # initialize per ebuild plugin checks here
                        # need to set it up for ==> self.modules_list or some 
other ordered list
                        for mod in [('ebuild', 'Ebuild'), ('live', 
'LiveEclassChecks'),
-                               ('eapi', 'EAPIChecks')]:
+                               ('eapi', 'EAPIChecks'), ('ebuild_metadata', 
'EbuildMetadata')]:
                                if mod[0]:
                                        mod_class = 
MODULE_CONTROLLER.get_class(mod[0])
                                        logging.debug("Initializing class name: 
%s", mod_class.__name__)
@@ -338,21 +328,6 @@ class Scanner(object):
                        if y_ebuild_continue:
                                continue
 
-
-                       for k, v in dynamic_data['ebuild'].metadata.items():
-                               if not isinstance(v, basestring):
-                                       continue
-                               m = NON_ASCII_RE.search(v)
-                               if m is not None:
-                                       self.qatracker.add_error(
-                                               "variable.invalidchar",
-                                               "%s: %s variable contains 
non-ASCII "
-                                               "character at position %s" %
-                                               
(dynamic_data['ebuild'].relative_path, k, m.start() + 1))
-
-                       if not dynamic_data['src_uri_error']:
-                               
self.thirdparty.check(dynamic_data['ebuild'].metadata, 
dynamic_data['ebuild'].relative_path)
-
                        if dynamic_data['ebuild'].metadata.get("PROVIDE"):
                                self.qatracker.add_error("virtual.oldstyle", 
dynamic_data['ebuild'].relative_path)
 

Reply via email to