|
1 | 1 | from argparse import ArgumentParser as _ArgumentParser, BooleanOptionalAction as _BooleanOptionalAction |
2 | 2 | from importlib.metadata import version as _package_version, PackageNotFoundError as _PackageNotFoundError |
3 | | -from importlib.util import spec_from_file_location as _spec_from_file_location, module_from_spec as _module_from_spec |
4 | 3 | from os import getlogin as _get_login |
5 | 4 | from os.path import abspath as _abspath |
6 | | -from os.path import exists as _exists |
7 | 5 | from sys import exit as _exit, version as _version |
8 | 6 | from warnings import filterwarnings as _filterwarnings |
9 | 7 |
|
10 | | -from customtkinter import set_default_color_theme as _set_default_color_theme |
11 | | - |
12 | | -from leads import register_controller as _register_controller, MAIN_CONTROLLER as _MAIN_CONTROLLER, \ |
13 | | - L as _L, load_config as _load_config, register_config as _register_config, reset as _reset |
14 | | -from leads.data_persistence import Dataset as _Dataset |
15 | | -from leads_gui import Config as _Config |
| 8 | +from leads import L as _L |
16 | 9 | from leads_gui.system import get_system_kernel as _get_system_kernel |
| 10 | +from leads_vec.run import run |
17 | 11 |
|
18 | 12 | if __name__ == "__main__": |
19 | 13 | _filterwarnings("ignore") |
20 | | - _MODULE_PATH = _abspath(__file__)[:-12] |
| 14 | + MODULE_PATH = _abspath(__file__)[:-12] |
21 | 15 |
|
22 | 16 | parser = _ArgumentParser(prog="LEADS VeC", |
23 | 17 | description="Lightweight Embedded Assisted Driving System VeC", |
24 | 18 | epilog="ProjectNeura: https://projectneura.org\n" |
25 | 19 | "GitHub: https://github.com/ProjectNeura/LEADS") |
26 | 20 | parser.add_argument("action", choices=("info", "replay", "run")) |
27 | 21 | parser.add_argument("-c", "--config", default=None, help="specify a configuration file") |
28 | | - parser.add_argument("-d", "--devices", default=f"{_MODULE_PATH}/devices.py", |
| 22 | + parser.add_argument("-d", "--devices", default=f"{MODULE_PATH}/devices.py", |
29 | 23 | help="specify a devices module") |
30 | 24 | parser.add_argument("-r", "--register", choices=("systemd", "config", "reverse_proxy"), default=None, |
31 | 25 | help="register a service") |
32 | 26 | parser.add_argument("-t", "--theme", default=None, help="specify a theme") |
33 | | - parser.add_argument("-mfs", "--magnify-font-sizes", type=float, default=None, help="magnify font sizes by a factor") |
| 27 | + parser.add_argument("-mfs", "--magnify-font-sizes", type=float, default=1, help="magnify font sizes by a factor") |
34 | 28 | parser.add_argument("--emu", action=_BooleanOptionalAction, default=False, help="use emulator") |
35 | 29 | parser.add_argument("--auto-mfs", action=_BooleanOptionalAction, default=False, |
36 | 30 | help="automatically magnify font sizes to match the original proportion") |
|
51 | 45 | f"Python Version: {_version}", |
52 | 46 | f"User: {_get_login()}", |
53 | 47 | f"`frpc` Available: {_frpc_exists()}", |
54 | | - f"Module Path: {_MODULE_PATH}", |
| 48 | + f"Module Path: {MODULE_PATH}", |
55 | 49 | f"LEADS Version: {leads_version}", |
56 | 50 | f"LEADS VeC Version: {__version__}", |
57 | 51 | sep="\n") |
58 | | - _exit() |
59 | | - if args.register == "systemd": |
60 | | - from ._bootloader import register_leads_vec as _create_service |
61 | | - |
62 | | - _create_service() |
63 | | - _L.info("Service registered") |
64 | | - _L.info(f"Service script is located at \"{_MODULE_PATH}/_bootloader/leads-vec.service.sh\"") |
65 | | - elif args.register == "config": |
66 | | - if _exists("config.json"): |
67 | | - r = input("\"config.json\" already exists. Overwrite? (y/N) >>>").lower() |
68 | | - if r.lower() != "y": |
69 | | - _exit("Error: Aborted") |
70 | | - with open("config.json", "w") as f: |
71 | | - f.write(str(_Config({}))) |
72 | | - _L.info("Configuration file saved to \"config.json\"") |
73 | | - elif args.register == "reverse_proxy": |
74 | | - from ._bootloader import start_frpc as _start_frpc |
75 | | - |
76 | | - _start_frpc() |
77 | | - _L.info("`frpc` started") |
78 | | - config = _load_config(args.config, _Config) if args.config else _Config({}) |
79 | | - _L.debug("Configuration loaded:", str(config)) |
80 | | - if t := args.theme: |
81 | | - _set_default_color_theme(t) |
82 | | - if f := args.magnify_font_sizes: |
83 | | - config.magnify_font_sizes(f) |
84 | | - if args.auto_mfs: |
85 | | - config.auto_magnify_font_sizes() |
86 | | - _register_config(config) |
87 | | - from leads_vec.cli import main |
88 | | - |
89 | | - if args.action == "replay": |
90 | | - from leads_emulation.replay import ReplayController as _Controller |
91 | | - |
92 | | - _register_controller(_MAIN_CONTROLLER, _Controller(_Dataset(f"{config.data_dir}/main.csv"))) |
93 | | - _L.info("Replay started") |
94 | | - _exit(main()) |
95 | | - |
96 | | - try: |
97 | | - if args.emu: |
98 | | - raise SystemError("User specifies to use emulator") |
99 | | - spec = _spec_from_file_location("_", args.devices) |
100 | | - spec.loader.exec_module(_module_from_spec(spec)) |
101 | | - except (ImportError, SystemError) as e: |
102 | | - _L.debug(repr(e)) |
103 | | - if isinstance(e, ImportError): |
104 | | - if args.ignore_import_error: |
105 | | - _L.debug(f"Ignoring import error: {repr(e)}") |
106 | | - _exit(main()) |
107 | | - else: |
108 | | - _L.warn( |
109 | | - f"Specified devices module ({args.devices}) is not available, using emulation module instead...") |
110 | | - _reset() |
111 | | - try: |
112 | | - from leads_emulation import SinController as _Controller |
113 | | - |
114 | | - _register_controller(_MAIN_CONTROLLER, _Controller(0, 200, .05)) |
115 | | - except ImportError as e: |
116 | | - _L.error(f"Emulator error: {repr(e)}") |
117 | | - _exit(1) |
118 | | - _exit(main()) |
| 52 | + else: |
| 53 | + if args.action == "replay": |
| 54 | + args.devices = f"{MODULE_PATH}/replay.py" |
| 55 | + args.emu = False |
| 56 | + _L.debug("Replay mode enabled") |
| 57 | + _exit(run(args.config, args.devices, args.register, args.theme, args.magnify_font_sizes, args.emu, |
| 58 | + args.auto_mfs, args.ignore_import_error)) |
| 59 | + _exit() |
0 commit comments