-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path_cmd_helper.py
More file actions
90 lines (79 loc) · 2.48 KB
/
_cmd_helper.py
File metadata and controls
90 lines (79 loc) · 2.48 KB
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
import glob
import os
from argparse import ArgumentParser
from tempfile import TemporaryDirectory
def get_parser():
parser = ArgumentParser(
prog="sphinx-runpython command line",
description="A collection of quick tools.",
epilog="",
)
parser.add_argument(
"command",
help="Command to run, only 'nb2py', 'readme', 'img2pdf' are available",
)
parser.add_argument(
"-p", "--path", help="Folder or file which contains the files to process"
)
parser.add_argument(
"-r",
"--recursive",
help="Recursive search.",
action="store_true",
)
parser.add_argument(
"-o",
"--output",
help="output",
)
parser.add_argument(
"--zoom",
default=1.0,
help="reduce images when img2pdf is used",
)
parser.add_argument(
"--rotate",
default=0.0,
help="rotate the image",
)
parser.add_argument("-v", "--verbose", help="verbosity", default=1, type=int)
return parser
def nb2py(infolder: str, recursive: bool = False, verbose: int = 0):
from .convert import convert_ipynb_to_gallery
if not os.path.exists(infolder):
raise FileNotFoundError(f"Unable to find {infolder!r}.")
patterns = [infolder + "/*.ipynb", infolder + "/**/*.ipynb"]
for pattern in patterns:
if verbose:
print(f"nb2py: look with pattern {pattern!r}, recursive={recursive}")
for name in glob.iglob(pattern, recursive=recursive):
spl = os.path.splitext(name)
out = spl[0] + ".py"
if verbose:
print(f"process {name!r} -> {out!r}")
convert_ipynb_to_gallery(name, outfile=out)
def process_args(args):
cmd = args.command
if cmd == "nb2py":
nb2py(args.path, recursive=args.recursive, verbose=args.verbose)
return
if cmd == "img2pdf":
from .tools.img_export import images2pdf
images2pdf(
args.path,
args.output,
verbose=args.verbose,
zoom=float(args.zoom),
rotate=float(args.rotate),
)
return
if cmd == "readme":
from .readme import check_readme_syntax
with TemporaryDirectory() as temp:
check_readme_syntax(args.path, verbose=args.verbose, folder=temp)
return
raise ValueError(f"Command {cmd!r} is unknown.")
def main():
parser = get_parser()
args = parser.parse_args()
process_args(args)