commit:     2aaa7db8d8178a6a1a062fae77f6db88a5353c91
Author:     Tom Wijsman <tomwij <AT> gentoo <DOT> org>
AuthorDate: Fri Jun  6 14:40:39 2014 +0000
Commit:     Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Wed Oct  1 23:45:34 2014 +0000
URL:        
http://sources.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=2aaa7db8

repoman/main.py: Split EAPI checks to checks/ebuilds/variables/eapi.py

---
 pym/repoman/checks/ebuilds/variables/__init__.py |  0
 pym/repoman/checks/ebuilds/variables/eapi.py     | 44 ++++++++++++++++++++++++
 pym/repoman/main.py                              | 12 +++----
 3 files changed, 49 insertions(+), 7 deletions(-)

diff --git a/pym/repoman/checks/ebuilds/variables/__init__.py 
b/pym/repoman/checks/ebuilds/variables/__init__.py
new file mode 100644
index 0000000..e69de29

diff --git a/pym/repoman/checks/ebuilds/variables/eapi.py 
b/pym/repoman/checks/ebuilds/variables/eapi.py
new file mode 100644
index 0000000..2f8b1cb
--- /dev/null
+++ b/pym/repoman/checks/ebuilds/variables/eapi.py
@@ -0,0 +1,44 @@
+
+'''eapi.py
+Perform checks on the EAPI variable.
+'''
+
+
+class EAPIChecks(object):
+       '''Perform checks on the EAPI variable.'''
+
+       def __init__(self, qatracker, repo_settings):
+               '''
+               @param qatracker: QATracker instance
+               @param repo_settings: Repository settings
+               '''
+               self.qatracker = qatracker
+               self.repo_settings = repo_settings
+
+       def check(self, pkg, ebuild):
+               '''
+               @param pkg: Package in which we check (object).
+               @param ebuild: Ebuild which we check (object).
+               '''
+               eapi = pkg._metadata["EAPI"]
+
+               if not self._checkBanned(ebuild, eapi):
+                       self._checkDeprecated(ebuild, eapi)
+
+       def _checkBanned(self, ebuild, eapi):
+               if self.repo_settings.repo_config.eapi_is_banned(eapi):
+                       self.qatracker.add_error(
+                               "repo.eapi.banned", "%s: %s" % 
(ebuild.relative_path, eapi))
+
+                       return True
+
+               return False
+
+       def _checkDeprecated(self, ebuild, eapi):
+               if self.repo_settings.repo_config.eapi_is_deprecated(eapi):
+                       self.qatracker.add_error(
+                               "repo.eapi.deprecated", "%s: %s" % 
(ebuild.relative_path, eapi))
+
+                       return True
+
+               return False

diff --git a/pym/repoman/main.py b/pym/repoman/main.py
index ecdecfa..c6f38df 100755
--- a/pym/repoman/main.py
+++ b/pym/repoman/main.py
@@ -58,6 +58,7 @@ from repoman.checks.ebuilds.manifests import Manifests
 from repoman.checks.ebuilds.misc import bad_split_check, pkg_invalid
 from repoman.checks.ebuilds.pkgmetadata import PkgMetadata
 from repoman.checks.ebuilds.use_flags import USEFlagChecks
+from repoman.checks.ebuilds.variables.eapi import EAPIChecks
 from repoman.ebuild import Ebuild
 from repoman.errors import err
 from repoman.modules.commit import repochecks
@@ -292,6 +293,7 @@ use_flag_checks = USEFlagChecks(qatracker, uselist)
 keywordcheck = KeywordChecks(qatracker)
 liveeclasscheck = LiveEclassChecks(qatracker)
 rubyeclasscheck = RubyEclassChecks(qatracker)
+eapicheck = EAPIChecks(qatracker, repo_settings)
 ######################
 
 for xpkg in effective_scanlist:
@@ -393,13 +395,9 @@ for xpkg in effective_scanlist:
                inherited = pkg.inherited
                live_ebuild = live_eclasses.intersection(inherited)
 
-               if repo_settings.repo_config.eapi_is_banned(eapi):
-                       qatracker.add_error(
-                               "repo.eapi.banned", "%s: %s" % 
(ebuild.relative_path, eapi))
-
-               elif repo_settings.repo_config.eapi_is_deprecated(eapi):
-                       qatracker.add_error(
-                               "repo.eapi.deprecated", "%s: %s" % 
(ebuild.relative_path, eapi))
+               #######################
+               eapicheck.check(pkg, ebuild)
+               #######################
 
                for k, v in myaux.items():
                        if not isinstance(v, basestring):

Reply via email to