summaryrefslogtreecommitdiff
path: root/mp-tool
blob: f1823fcf3cbd014836fdf0928defbc3caa3550c1 (plain)
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
#!/usr/bin/env python3
from mp_tool.util import 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")

    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.WEBSOCKET, a.password, a.CODE))
    parser_eval.add_argument("WEBSOCKET", help="Websocket address (e.g. ws://ESP_E1278E:8266)")
    parser_eval.add_argument("CODE", help="Code to execute")
    parser_eval.add_argument("--password")

    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.WEBSOCKET, a.password))
    parser_repl.add_argument("WEBSOCKET", help="Websocket address (e.g. ws://ESP_E1278E:8266)")
    parser_repl.add_argument("--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.WEBSOCKET, a.password, a.FILE, a.TARGET))
    parser_put.add_argument("WEBSOCKET", help="Websocket address (e.g. ws://ESP_E1278E:8266)")
    parser_put.add_argument("--password")
    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("--port", default=default_port, help="Serial port, default " + default_port)
    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.WEBSOCKET, a.password, a.FILE, a.TARGET))
    parser_get.add_argument("WEBSOCKET", help="Websocket address (e.g. ws://ESP_E1278E:8266)")
    parser_get.add_argument("FILE", help="Filename")
    parser_get.add_argument("TARGET", nargs='?', help="local target path/filename")
    parser_get.add_argument("--password")

    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("--port", default=default_port, help="Serial port, default " + default_port)
    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("--port", default=default_port, help="Serial port, default " + default_port)
    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)