-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrun.py
62 lines (53 loc) · 3.07 KB
/
run.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
import argparse
import os
import sys
import yaml
from LatexSubject import LatexSubject
if __name__ == "__main__":
with open("default_config.yaml") as yml:
def_cfg = yaml.load(yml)
with open("subjects.yaml") as yml:
subjects_cfg = yaml.load(yml)
subjects = {}
for command_name, subject in subjects_cfg.items():
subjects[command_name] = LatexSubject(def_cfg["viewer"],
def_cfg["editor"],
def_cfg["source"],
def_cfg["default_pattern"],
subject["desc"],
subject["path"],
pdf_name=subject.setdefault("pdf", "document"),
title=subject.setdefault("title", None))
# start parse
parser = argparse.ArgumentParser(description="Support program for TeX projects",
epilog="Projects: " +
"; ".join(f"command: {com}, desc: {subjects[com].get_desc()}"
for com in subjects.keys()))
subparsers = parser.add_subparsers()
# compile tex
parser_compile = subparsers.add_parser("compile", help=f"compile one of project")
parser_compile.add_argument("command_name", choices=subjects.keys(), type=str,
help="name of project")
parser_compile.add_argument("numbers", default=None, nargs="*",
type=int, help="numbers of target files")
parser_compile.set_defaults(func=lambda args: subjects[args.command_name].compile(args.numbers))
# create tex from pattern
parser_create = subparsers.add_parser("create", help=f"create new file in one of project")
parser_create.add_argument("command_name", choices=subjects.keys(), type=str,
help="name of project")
parser_create.add_argument("number", type=int, help="number of target files")
parser_create.set_defaults(func=lambda args: subjects[args.command_name].create(args.number))
# edit tex by config editor
parser_edit = subparsers.add_parser("edit", help=f"edit tex in one of project")
parser_edit.add_argument("command_name", choices=subjects.keys(), type=str,
help="name of project")
parser_edit.add_argument("number", type=int, help="number of target files")
parser_edit.set_defaults(func=lambda args: subjects[args.command_name].edit(args.number))
# view pdf by config reader
parser_view = subparsers.add_parser("view", help=f"view pdf in one of project")
parser_view.add_argument("command_name", choices=subjects.keys(), type=str,
help="name of project")
parser_view.add_argument("number", type=int, help="number of target files")
parser_view.set_defaults(func=lambda args: subjects[args.command_name].view(args.number))
args = parser.parse_args()
args.func(args)