import sys
import argparse
parser = argparse.ArgumentParser(description='Check for missing whitespace on specific lines.')
parser.add_argument('tutorial', type=argparse.FileType('r'))
parser.add_argument('--fix', action='store_true')
args = parser.parse_args()
def lint(fh):
in_diff = False
min_length = sys.maxsize
failures = 0
fixed = []
for lineno, line in enumerate(fh.readlines()):
line = line.rstrip('\n')
if '```diff' in line:
in_diff = True
min_length = line.index('`') + 1
elif in_diff and '```' in line:
in_diff = False
min_length = sys.maxsize
elif in_diff and len(line) < min_length:
print(f'{fh.name}: {lineno}: diff line too short ({len(line)} < {min_length})!: "{line}"')
line += " " * (min_length - len(line))
failures += 1
fixed.append(line)
return failures, fixed
if __name__ == '__main__':
failures, fixed = lint(args.tutorial)
if args.fix:
with open(args.tutorial.name, 'w') as handle:
handle.write("\n".join(fixed))
if failures:
print(f'ERROR: Linting diffs failed with {failures} failures')
print('All diffs OK!')