commit: 1369a76925496f835dd7076029926f57f9605f8a Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org> AuthorDate: Mon Jun 2 06:04:27 2014 +0000 Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com> CommitDate: Mon Jun 2 06:04:27 2014 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=1369a769
repoman/main.py: Create FileChecks class Move file checks code block to a new checks/directories/ module --- pym/repoman/checks/directories/__init__.py | 0 pym/repoman/checks/directories/files.py | 77 ++++++++++++++++++++++++++++++ pym/repoman/main.py | 48 +++---------------- 3 files changed, 84 insertions(+), 41 deletions(-) diff --git a/pym/repoman/checks/directories/__init__.py b/pym/repoman/checks/directories/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/pym/repoman/checks/directories/files.py b/pym/repoman/checks/directories/files.py new file mode 100644 index 0000000..62f6169 --- /dev/null +++ b/pym/repoman/checks/directories/files.py @@ -0,0 +1,77 @@ + +'''repoman/checks/diretories/files.py + +''' + +import io + +from portage import _encodings, _unicode_encode +from portage import os + + + +class FileChecks(object): + + def __init__(self, qatracker, repoman_settings, repo_settings, portdb, + vcs_settings, vcs_new_changed): + ''' + @param qatracker: QATracker instance + @param repoman_settings: settings instance + @param repo_settings: repository settings instance + @param portdb: portdb instance + ''' + self.portdb = portdb + self.qatracker = qatracker + self.repo_settings = repo_settings + self.repoman_settings = repoman_settings + self.vcs_settings = vcs_settings + self.vcs_new_changed = vcs_new_changed + + + def check(self, checkdir, checkdirlist, checkdir_relative): + '''Checks the ebuild sources and files for errors + + @param xpkg: the pacakge being checked + @param checkdir: string, directory path + @param checkdir_relative: repolevel determined path + ''' + for y_file in checkdirlist: + index = self.repo_settings.repo_config.find_invalid_path_char(y_file) + if index != -1: + y_relative = os.path.join(checkdir_relative, y_file) + if self.vcs_settings.vcs is not None and not self.vcs_new_changed(y_relative): + # If the file isn't in the VCS new or changed set, then + # assume that it's an irrelevant temporary file (Manifest + # entries are not generated for file names containing + # prohibited characters). See bug #406877. + index = -1 + if index != -1: + self.qatracker.add_error("file.name", + "%s/%s: char '%s'" % (checkdir, y_file, y_file[index])) + + if not (y_file in ("ChangeLog", "metadata.xml") + or y_file.endswith(".ebuild")): + continue + f = None + try: + line = 1 + f = io.open( + _unicode_encode( + os.path.join(checkdir, y_file), + encoding=_encodings['fs'], errors='strict'), + mode='r', encoding=_encodings['repo.content']) + for l in f: + line += 1 + except UnicodeDecodeError as ue: + s = ue.object[:ue.start] + l2 = s.count("\n") + line += l2 + if l2 != 0: + s = s[s.rfind("\n") + 1:] + self.qatracker.add_error("file.UTF8", + "%s/%s: line %i, just after: '%s'" % (checkdir, y_file, line, s)) + finally: + if f is not None: + f.close() + return + diff --git a/pym/repoman/main.py b/pym/repoman/main.py index ffb9929..9db52c0 100755 --- a/pym/repoman/main.py +++ b/pym/repoman/main.py @@ -45,6 +45,7 @@ from portage.package.ebuild.digestgen import digestgen from portage.eapi import eapi_has_iuse_defaults, eapi_has_required_use from repoman.argparser import parse_args +from repoman.checks.directories.files import FileChecks from repoman.checks.ebuilds.checks import run_checks, checks_init from repoman.checks.ebuilds.fetches import FetchChecks from repoman.checks.ebuilds.isebuild import IsEbuild @@ -325,50 +326,15 @@ for xpkg in effective_scanlist: # Sort ebuilds in ascending order for the KEYWORDS.dropped check. ebuildlist = sorted(pkgs.values()) ebuildlist = [pkg.pf for pkg in ebuildlist] - - for y in checkdirlist: - index = repo_settings.repo_config.find_invalid_path_char(y) - if index != -1: - y_relative = os.path.join(checkdir_relative, y) - if vcs_settings.vcs is not None and not vcs_new_changed(y_relative): - # If the file isn't in the VCS new or changed set, then - # assume that it's an irrelevant temporary file (Manifest - # entries are not generated for file names containing - # prohibited characters). See bug #406877. - index = -1 - if index != -1: - qatracker.add_error("file.name", - "%s/%s: char '%s'" % (checkdir, y, y[index])) - - if not (y in ("ChangeLog", "metadata.xml") or y.endswith(".ebuild")): - continue - f = None - try: - line = 1 - f = io.open( - _unicode_encode( - os.path.join(checkdir, y), - encoding=_encodings['fs'], errors='strict'), - mode='r', encoding=_encodings['repo.content']) - for l in f: - line += 1 - except UnicodeDecodeError as ue: - s = ue.object[:ue.start] - l2 = s.count("\n") - line += l2 - if l2 != 0: - s = s[s.rfind("\n") + 1:] - qatracker.add_error("file.UTF8", - "%s/%s: line %i, just after: '%s'" % (checkdir, y, line, s)) - finally: - if f is not None: - f.close() - -############### +####################### + filescheck = FileChecks(qatracker, repoman_settings, repo_settings, portdb, + vcs_settings, vcs_new_changed) + filescheck.check(checkdir, checkdirlist, checkdir_relative) +####################### status_check = VCSStatus(vcs_settings, checkdir, checkdir_relative, xpkg, qatracker) status_check.check(check_ebuild_notadded) eadded.extend(status_check.eadded) -############### + ################# fetchcheck = FetchChecks(qatracker, repoman_settings, repo_settings, portdb, vcs_settings, vcs_new_changed)