From d2a242c864df6acc6620bd87bde1b410162ea917 Mon Sep 17 00:00:00 2001 From: Chmouel Boudjnah Date: Tue, 4 Feb 2014 15:20:15 +0100 Subject: [PATCH] Add while/until to the for/do rule Like 'for/do' check that the while/until operator are on the same line with the do. Fixes some pep8 error along the way. Change-Id: I440afe60691263365bf35310bf4212d94f30c339 (cherry picked from commit 86a8e9767912ae957cbbf6ea20a08106011a7728) --- bash8.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/bash8.py b/bash8.py index 9fb51ec..7552e0d 100755 --- a/bash8.py +++ b/bash8.py @@ -47,7 +47,7 @@ IGNORE = None def register_ignores(ignores): global IGNORE if ignores: - IGNORE='^(' + '|'.join(ignores.split(',')) + ')' + IGNORE = '^(' + '|'.join(ignores.split(',')) + ')' def should_ignore(error): @@ -64,11 +64,15 @@ def print_error(error, line): def not_continuation(line): return not re.search('\\\\$', line) + def check_for_do(line): if not_continuation(line): - if re.search('^\s*for ', line): + match = re.match('^\s*(for|while|until)\s', line) + if match: + operator = match.group(1).strip() if not re.search(';\s*do(\b|$)', line): - print_error('E010: Do not on same line as for', line) + print_error('E010: Do not on same line as %s' % operator, + line) def check_if_then(line):