aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-04-29 19:13:15 +0000
committerZac Medico <zmedico@gentoo.org>2009-04-29 19:13:15 +0000
commit70456279dbe24b22a7442c1ac5c27aeebc8ee6e7 (patch)
tree94e3cf3438af3b52adc33f9f752d6b9cc0128732 /pym/repoman
parentMake EbuildWhitespace ignore here-documents. Thanks to Diego Pettenò (diff)
downloadportage-70456279dbe24b22a7442c1ac5c27aeebc8ee6e7.tar.gz
portage-70456279dbe24b22a7442c1ac5c27aeebc8ee6e7.tar.bz2
portage-70456279dbe24b22a7442c1ac5c27aeebc8ee6e7.zip
Move the here-document code from the EbuildWhitespace check to the
run_checks() function, so that all checks ignore the content of here-documents. svn path=/main/trunk/; revision=13412
Diffstat (limited to 'pym/repoman')
-rw-r--r--pym/repoman/checks.py52
1 files changed, 26 insertions, 26 deletions
diff --git a/pym/repoman/checks.py b/pym/repoman/checks.py
index 075370b6b..732f6eb95 100644
--- a/pym/repoman/checks.py
+++ b/pym/repoman/checks.py
@@ -71,28 +71,12 @@ class EbuildWhitespace(LineCheck):
ignore_line = re.compile(r'(^$)|(^(\t)*#)')
leading_spaces = re.compile(r'^[\S\t]')
trailing_whitespace = re.compile(r'.*([\S]$)')
- here_doc_re = re.compile(r'.*\s<<[-]?(\w+)$')
-
- def new(self, pkg):
- self._here_doc_delim = None
def check(self, num, line):
-
- # Check if we're inside a here-document.
- if self._here_doc_delim is not None:
- if self._here_doc_delim.match(line):
- self._here_doc_delim = None
- if self._here_doc_delim is None:
- here_doc = self.here_doc_re.match(line)
- if here_doc is not None:
- self._here_doc_delim = re.compile('^%s$' % here_doc.group(1))
-
- if self._here_doc_delim is None:
- # We're not in a here-document.
- if self.leading_spaces.match(line) is None:
- return errors.LEADING_SPACES_ERROR
- if self.trailing_whitespace.match(line) is None:
- return errors.TRAILING_WHITESPACE_ERROR
+ if self.leading_spaces.match(line) is None:
+ return errors.LEADING_SPACES_ERROR
+ if self.trailing_whitespace.match(line) is None:
+ return errors.TRAILING_WHITESPACE_ERROR
class EbuildQuote(LineCheck):
"""Ensure ebuilds have valid quoting around things like D,FILESDIR, etc..."""
@@ -386,18 +370,34 @@ _constant_checks = tuple((c() for c in (
EMakeParallelDisabled, EMakeParallelDisabledViaMAKEOPTS,
DeprecatedBindnowFlags, WantAutoDefaultValue)))
+_here_doc_re = re.compile(r'.*\s<<[-]?(\w+)$')
+
def run_checks(contents, pkg):
checks = _constant_checks
+ here_doc_delim = None
for lc in checks:
lc.new(pkg)
for num, line in enumerate(contents):
- for lc in checks:
- ignore = lc.ignore_line
- if not ignore or not ignore.match(line):
- e = lc.check(num, line)
- if e:
- yield lc.repoman_check_name, e % (num + 1)
+
+ # Check if we're inside a here-document.
+ if here_doc_delim is not None:
+ if here_doc_delim.match(line):
+ here_doc_delim = None
+ if here_doc_delim is None:
+ here_doc = _here_doc_re.match(line)
+ if here_doc is not None:
+ here_doc_delim = re.compile('^%s$' % here_doc.group(1))
+
+ if here_doc_delim is None:
+ # We're not in a here-document.
+ for lc in checks:
+ ignore = lc.ignore_line
+ if not ignore or not ignore.match(line):
+ e = lc.check(num, line)
+ if e:
+ yield lc.repoman_check_name, e % (num + 1)
+
for lc in checks:
i = lc.end()
if i is not None: