Coverage for bugscpp/bugscpp.py : 0%

Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1import sys
2from time import perf_counter
4from command import CommandList
5from errors import DppArgparseError, DppDockerError, DppError, DppNoSuchTagError, DppSearchError
6from message import message
9def _handle_cmdline_error(e: DppError):
10 if isinstance(e, DppArgparseError):
11 message.stdout_argparse_error(str(e))
12 elif isinstance(e, DppDockerError):
13 message.stdout_argparse_error(str(e))
14 elif isinstance(e, DppSearchError):
15 message.stdout_search_error(str(e))
18def main():
19 def measure_time(func, args):
20 start_time = perf_counter()
21 func(args)
22 elapsed = perf_counter() - start_time
23 if elapsed < 100:
24 message.stdout_progress(f"Elapsed: {elapsed:.2f}s")
25 else:
26 minutes, seconds = divmod(elapsed, 60)
27 message.stdout_progress(f"Elapsed: {int(minutes)}m {seconds:.2f}s")
29 commands = CommandList()
31 try:
32 name = sys.argv[1]
33 except IndexError:
34 name = "help"
36 argv = sys.argv[2:]
37 if name not in commands:
38 message.stdout_progress_error(f"'{name}' is not a valid command")
39 return 1
41 try:
42 if name not in ["help", "search"]:
43 measure_time(commands[name], argv)
44 else:
45 commands[name](argv)
46 except DppError as e:
47 _handle_cmdline_error(e)
50if __name__ == "__main__":
51 from multiprocessing import freeze_support
53 freeze_support()
55 main()