From a388a658ce3d2a60720968d07f02ec8f4530361f Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 31 Aug 2022 10:09:55 +0530 Subject: [PATCH] Fix payload update code in multi send commands --- gen-go-code.py | 6 +++++- tools/cmd/at/send_text.go | 7 ++++++- tools/cmd/at/set_window_logo.go | 4 +++- tools/cmd/at/socket_io.go | 3 +++ 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/gen-go-code.py b/gen-go-code.py index 957ef1bf0..cd57f0c29 100755 --- a/gen-go-code.py +++ b/gen-go-code.py @@ -147,6 +147,10 @@ def build_go_code(name: str, cmd: RemoteCommand, seq: OptionSpecSeq, template: s del unhandled[x] if unhandled: raise SystemExit(f'Cant map fields: {", ".join(unhandled)} for cmd: {name}') + if name != 'send_text': + unused_options = set(option_map) - used_options - {'no_response', 'response_timeout'} + if unused_options: + raise SystemExit(f'Unused options: {", ".join(unused_options)} for command: {name}') argspec = cmd.args.spec if argspec: @@ -241,7 +245,7 @@ def update_at_commands() -> None: os.remove(dest) with open(dest, 'w') as f: f.write(code) - print('\x1b[31mTODO\x1b[m: test set_window_logo, set_window_background, set_font_size, send_text, env, scroll_window', file=sys.stderr) + print('\x1b[31mTODO\x1b[m: test set_font_size, send_text, env, scroll_window', file=sys.stderr) def main() -> None: diff --git a/tools/cmd/at/send_text.go b/tools/cmd/at/send_text.go index afbdea247..403e3d909 100644 --- a/tools/cmd/at/send_text.go +++ b/tools/cmd/at/send_text.go @@ -14,12 +14,13 @@ type generator_function func(io_data *rc_io_data) (bool, error) func parse_send_text(io_data *rc_io_data, args []string) error { generators := make([]generator_function, 0, 1) - var payload send_text_json_type = io_data.rc.Payload.(send_text_json_type) if len(args) > 0 { text := strings.Join(args, " ") text_gen := func(io_data *rc_io_data) (bool, error) { + payload := io_data.rc.Payload.(send_text_json_type) payload.Data = "text:" + text[:2048] + io_data.rc.Payload = payload text = text[2048:] return len(text) == 0, nil } @@ -37,7 +38,9 @@ func parse_send_text(io_data *rc_io_data, args []string) error { if err != nil && !errors.Is(err, io.EOF) { return false, err } + payload := io_data.rc.Payload.(send_text_json_type) payload.Data = "base64:" + base64.StdEncoding.EncodeToString(chunk[:n]) + io_data.rc.Payload = payload return n == 0, nil } generators = append(generators, file_gen) @@ -45,7 +48,9 @@ func parse_send_text(io_data *rc_io_data, args []string) error { io_data.multiple_payload_generator = func(io_data *rc_io_data) (bool, error) { if len(generators) == 0 { + payload := io_data.rc.Payload.(send_text_json_type) payload.Data = "text:" + io_data.rc.Payload = payload return true, nil } finished, err := generators[0](io_data) diff --git a/tools/cmd/at/set_window_logo.go b/tools/cmd/at/set_window_logo.go index 7e35a0448..2013b4d53 100644 --- a/tools/cmd/at/set_window_logo.go +++ b/tools/cmd/at/set_window_logo.go @@ -37,12 +37,14 @@ func read_window_logo(path string) (func(io_data *rc_io_data) (bool, error), err } return func(io_data *rc_io_data) (bool, error) { - var payload set_window_logo_json_type = io_data.rc.Payload.(set_window_logo_json_type) + payload := io_data.rc.Payload.(set_window_logo_json_type) if len(buf) == 0 { payload.Data = "" + io_data.rc.Payload = payload return true, nil } payload.Data = base64.StdEncoding.EncodeToString(buf) + io_data.rc.Payload = payload buf = buf[:cap(buf)] n, err := f.Read(buf) if err != nil && err != io.EOF { diff --git a/tools/cmd/at/socket_io.go b/tools/cmd/at/socket_io.go index 9fc55db5d..ca30d703b 100644 --- a/tools/cmd/at/socket_io.go +++ b/tools/cmd/at/socket_io.go @@ -5,6 +5,7 @@ package at import ( "bytes" "errors" + "fmt" "io" "net" "time" @@ -13,6 +14,8 @@ import ( "kitty/tools/wcswidth" ) +var _ = fmt.Print + func write_all_to_conn(conn *net.Conn, data []byte) error { for len(data) > 0 { n, err := (*conn).Write(data)