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)