1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
#!/usr/bin/env python3
#
# Output rst doc for defined pkgcheck checks.
"""
Checks
======
List of checks that can be selected to run.
By default, all checks that operate at the current scope or below will be run.
In other words, if running inside a package directory in a repo, only checks
that operate at a package or version scope will be run. On the other hand, when
running against an entire repo, all defined checks will be run.
"""
from operator import attrgetter
import sys
from textwrap import dedent, TextWrapper
from snakeoil.strings import pluralism as _pl
from pkgcheck import base, const
def main(f=sys.stdout, **kwargs):
def out(s, **kwargs):
print(s, file=f, **kwargs)
def _rst_header(char, text, newline=True):
if newline:
out('\n', end='')
out(text)
out(char * len(text))
# add module docstring to output doc
if __doc__ is not None:
out(__doc__.strip())
wrapper = TextWrapper(width=85)
for i, scope in enumerate(base.scopes.values()):
_rst_header('-', scope.desc.capitalize() + ' scope')
checks = (x for x in const.CHECKS.values() if x.scope == scope)
for check in checks:
if check.__doc__ is not None:
try:
summary, explanation = check.__doc__.split('\n', 1)
except ValueError:
summary = check.__doc__
explanation = None
else:
summary = None
_rst_header('^', check.__name__)
if summary:
out('\n' + dedent(summary).strip())
if explanation:
explanation = '\n'.join(dedent(explanation).strip().split('\n'))
out('\n' + explanation)
known_results = ', '.join(
f'`{r.__name__}`_' for r in
sorted(check.known_results, key=attrgetter('__name__')))
out('\n' + '\n'.join(wrapper.wrap(
f"(known result{_pl(check.known_results)}: {known_results})")))
if __name__ == '__main__':
main()
|