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
|
#!/usr/bin/env python3
from mp_tool.util import UsageAction, HelpAction, format_subcommands_help, get_default_serial_port
from argparse import ArgumentParser
from importlib import import_module
from sys import argv
import traceback
if __name__ == '__main__':
default_port = get_default_serial_port()
parser = ArgumentParser(add_help=False)
parser.add_argument("--help", action=HelpAction, help="Display full help")
parser.add_argument("-h", action=UsageAction, help="Display usage")
parser.add_argument("--password", help="Password for websocket communication")
parser.add_argument("--ws", default="ws://ESP_E1278E:8266",
help="Websocket address (default: ws://ESP_E1278E:8266)")
parser.add_argument("--port", default=default_port,
help="Port for serial communication (default " + default_port + ")")
subparsers = parser.add_subparsers()
parser_eval = subparsers.add_parser("eval", help="Eval python code over websocket")
parser_eval.set_defaults(func=lambda a: import_module('mp_tool.web').eval(a.ws, a.password, a.CODE))
parser_eval.add_argument("CODE", help="Code to execute")
parser_eval_serial = subparsers.add_parser("eval-serial", help="Eval python code over serial")
parser_eval_serial.set_defaults(func=lambda a: import_module('mp_tool.serial').eval(a.port, a.CODE))
parser_eval_serial.add_argument("--port", default=default_port, help="Serial port, default " + default_port)
parser_eval_serial.add_argument("CODE", help="Code to execute")
parser_repl = subparsers.add_parser("repl", help="Interactive REPL over websocket")
parser_repl.set_defaults(func=lambda a: import_module('mp_tool.web').repl(a.ws, a.password))
parser_put = subparsers.add_parser("put", help="Send file over websocket")
parser_put.set_defaults(func=lambda a: import_module('mp_tool.web').put(a.ws, a.password, a.FILE, a.TARGET))
parser_put.add_argument("FILE", help="Filename")
parser_put.add_argument("TARGET", nargs='?', help="remote target path/filename")
parser_put_serial = subparsers.add_parser("put-serial", help="Send file over serial")
parser_put_serial.set_defaults(func=lambda a: import_module('mp_tool.serial').put(a.port, a.FILE, a.TARGET))
parser_put_serial.add_argument("FILE", help="Filename")
parser_put_serial.add_argument("TARGET", nargs='?', help="remote target path/filename")
parser_get = subparsers.add_parser("get", help="Load file over websocket")
parser_get.set_defaults(func=lambda a: import_module('mp_tool.web').get(a.ws, a.password, a.FILE, a.TARGET))
parser_get.add_argument("FILE", help="Filename")
parser_get.add_argument("TARGET", nargs='?', help="local target path/filename")
parser_get_serial = subparsers.add_parser("get-serial", help="Get file over serial")
parser_get_serial.set_defaults(func=lambda a: import_module('mp_tool.serial').get(a.port, a.FILE, a.TARGET))
parser_get_serial.add_argument("FILE", help="Filename")
parser_get_serial.add_argument("TARGET", nargs='?', help="local target path/filename")
parser_ls_serial = subparsers.add_parser("ls-serial", help="List files over serial")
parser_ls_serial.set_defaults(func=lambda a: import_module('mp_tool.serial').ls(a.port, a.DIR))
parser_ls_serial.add_argument("DIR", default=".", nargs='?', help="List files in this directory (Default '.')")
args = parser.parse_args(argv[1:])
if 'func' in args:
try:
args.func(args)
except Exception as e:
print("Call failed with arguments: " + str(args))
parser.exit(1, traceback.format_exc())
else:
print(format_subcommands_help(parser))
parser.exit(0)
|