-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
executable file
·140 lines (112 loc) · 4.37 KB
/
main.py
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#!/usr/bin/env python
# PYTHON_ARGCOMPLETE_OK
import time
import logging
import argparse
import argcomplete
from manpage.directory import ManDirectoryParser
def dirparse(args):
parser = ManDirectoryParser(database=args.database)
parser.parse_directory(source_dir=args.source_dir)
mps = args.missing_parsers
if mps:
print "Top %s missing parsers: %s" % (
mps, parser.missing_parsers.most_common(mps))
def imaging(args):
parser = ManDirectoryParser(database=args.database)
parser.generate_images(output_dir=args.output_dir)
def generate(args):
parser = ManDirectoryParser(database=args.database)
parser.generate_output(output_dir=args.output_dir, base_url=args.base_url)
scs = args.section_counters
if scs:
print "Top %s section names: %s" % (
scs, parser.section_counters.most_common(scs))
mls = args.missing_links
if mls:
print "Top %s missing links: %s" % (
mls, parser.missing_links.most_common(mls))
def generate_indexes(args):
parser = ManDirectoryParser(database=args.database)
parser.generate_indexes(output_dir=args.output_dir, base_url=args.base_url)
if __name__ == '__main__':
start_time = time.time()
parser = argparse.ArgumentParser(
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument("--log-level", help="choose log level")
parser.add_argument(
"--database",
help="the database you want to use",
default="manpages.db")
subparsers = parser.add_subparsers()
# dirparse option
parser_dirparse = subparsers.add_parser(
'dirparse',
help='Parses directory into a database',
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser_dirparse.add_argument(
"source_dir", help="the directory you want to use as source")
parser_dirparse.add_argument(
"--missing-parsers",
help="choose the amount of missing parsers to display",
type=int,
default=0)
parser_dirparse.set_defaults(func=dirparse)
# generate option
parser_generate = subparsers.add_parser(
'generate',
help='Generates pages from database',
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser_generate.add_argument(
"--base-url", help="Base URL", default="https://www.carta.tech/")
parser_generate.add_argument(
"output_dir", help="the directory you want to use as a destination")
parser_generate.add_argument(
"--missing-links",
help="choose the amount of broken links to display",
type=int,
default=0)
parser_generate.add_argument(
"--section-counters",
help="choose the amount of section titles to display",
type=int,
default=0)
parser_generate.set_defaults(func=generate)
# generate_indexes option
parser_generate_indexes = subparsers.add_parser(
'generate-indexes',
help='Generates pages from database',
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser_generate_indexes.add_argument(
"--base-url", help="Base URL", default="https://www.carta.tech/")
parser_generate_indexes.add_argument(
"output_dir", help="the directory you want to use as a destination")
parser_generate_indexes.add_argument(
"--missing-links",
help="choose the amount of broken links to display",
type=int,
default=0)
parser_generate_indexes.add_argument(
"--section-counters",
help="choose the amount of section titles to display",
type=int,
default=0)
parser_generate_indexes.set_defaults(func=generate_indexes)
# parser_imaging
parser_imaging = subparsers.add_parser(
'imaging',
help='Generates images for each manpage',
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser_imaging.add_argument(
"output_dir", help="the directory you want to use as a destination")
parser_imaging.set_defaults(func=imaging)
# Set bash autocompletion
argcomplete.autocomplete(parser)
# Parse arguments
args = parser.parse_args()
if args.log_level:
log_level = getattr(logging, args.log_level.upper())
logging.basicConfig(level=log_level)
args.func(args)
elapsed = time.time() - start_time
logging.info("--- Total time: %s seconds ---" % (elapsed, ))