diff options
-rwxr-xr-x | bin/repoman | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/bin/repoman b/bin/repoman index 328aec4ec..84033318a 100755 --- a/bin/repoman +++ b/bin/repoman @@ -836,6 +836,28 @@ class EbuildUselessDodoc(object): (match.group(2), ) + " on line: %d")) return errors +class EbuildUselessCdS(object): + """Check for redundant cd ${S} statements""" + repoman_check_name = 'ebuild.minorsyn' + method_re = re.compile(r'^\s*src_(compile|install|test)\s*\(\)') + cds_re = re.compile(r'^\s*cd\s+("\$(\{S\}|S)"|\$(\{S\}|S))\s') + + def __init__(self, contents): + self.contents = contents + + def Run(self): + errors = [] + check_next_line = False + for num, line in enumerate(self.contents): + if check_next_line: + check_next_line = False + if self.cds_re.match(line): + errors.append((num + 1, + 'Ebuild has redundant cd ${S} statement on line: %d')) + elif self.method_re.match(line): + check_next_line = True + return errors + if mymode == "commit": retval = ("","") if isCvs: @@ -1459,7 +1481,7 @@ for x in scanlist: finally: f.close() del f - for check in (EbuildQuote, EbuildUselessDodoc): + for check in (EbuildQuote, EbuildUselessDodoc, EbuildUselessCdS): c = check(contents) errors = c.Run() for e in errors: |