From: Zac Medico Date: Fri, 2 Nov 2007 07:24:55 +0000 (-0000) Subject: Add a check for redundant cd "${S}" statements on the first X-Git-Tag: v2.1.3.19~30 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=dd134813921499946a6c05a859c0c5bc6fa84473;p=portage.git Add a check for redundant cd "${S}" statements on the first line of src_(compile|install|test) ebuild methods. Thanks to Petteri Räty for this patch. (trunk r8351 and r8353) svn path=/main/branches/2.1.2/; revision=8376 --- 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: