Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
galaxyproject
GitHub Repository: galaxyproject/training-material
Path: blob/main/bin/lint-diffs.py
1677 views
1
#!/usr/bin/env python3
2
import sys
3
import argparse
4
parser = argparse.ArgumentParser(description='Check for missing whitespace on specific lines.')
5
parser.add_argument('tutorial', type=argparse.FileType('r'))
6
parser.add_argument('--fix', action='store_true')
7
args = parser.parse_args()
8
9
10
def lint(fh):
11
in_diff = False
12
min_length = sys.maxsize
13
failures = 0
14
fixed = []
15
for lineno, line in enumerate(fh.readlines()):
16
line = line.rstrip('\n')
17
if '```diff' in line:
18
in_diff = True
19
min_length = line.index('`') + 1
20
elif in_diff and '```' in line:
21
in_diff = False
22
min_length = sys.maxsize
23
elif in_diff and len(line) < min_length:
24
print(f'{fh.name}: {lineno}: diff line too short ({len(line)} < {min_length})!: "{line}"')
25
line += " " * (min_length - len(line))
26
failures += 1
27
fixed.append(line)
28
return failures, fixed
29
30
31
if __name__ == '__main__':
32
failures, fixed = lint(args.tutorial)
33
if args.fix:
34
with open(args.tutorial.name, 'w') as handle:
35
handle.write("\n".join(fixed))
36
if failures:
37
print(f'ERROR: Linting diffs failed with {failures} failures')
38
print('All diffs OK!')
39
40