Fix payload update code in multi send commands

This commit is contained in:
Kovid Goyal 2022-08-31 10:09:55 +05:30
parent b5e2871aa0
commit a388a658ce
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
4 changed files with 17 additions and 3 deletions

View File

@ -147,6 +147,10 @@ def build_go_code(name: str, cmd: RemoteCommand, seq: OptionSpecSeq, template: s
del unhandled[x] del unhandled[x]
if unhandled: if unhandled:
raise SystemExit(f'Cant map fields: {", ".join(unhandled)} for cmd: {name}') 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 argspec = cmd.args.spec
if argspec: if argspec:
@ -241,7 +245,7 @@ def update_at_commands() -> None:
os.remove(dest) os.remove(dest)
with open(dest, 'w') as f: with open(dest, 'w') as f:
f.write(code) 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: def main() -> None:

View File

@ -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 { func parse_send_text(io_data *rc_io_data, args []string) error {
generators := make([]generator_function, 0, 1) generators := make([]generator_function, 0, 1)
var payload send_text_json_type = io_data.rc.Payload.(send_text_json_type)
if len(args) > 0 { if len(args) > 0 {
text := strings.Join(args, " ") text := strings.Join(args, " ")
text_gen := func(io_data *rc_io_data) (bool, error) { text_gen := func(io_data *rc_io_data) (bool, error) {
payload := io_data.rc.Payload.(send_text_json_type)
payload.Data = "text:" + text[:2048] payload.Data = "text:" + text[:2048]
io_data.rc.Payload = payload
text = text[2048:] text = text[2048:]
return len(text) == 0, nil 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) { if err != nil && !errors.Is(err, io.EOF) {
return false, err return false, err
} }
payload := io_data.rc.Payload.(send_text_json_type)
payload.Data = "base64:" + base64.StdEncoding.EncodeToString(chunk[:n]) payload.Data = "base64:" + base64.StdEncoding.EncodeToString(chunk[:n])
io_data.rc.Payload = payload
return n == 0, nil return n == 0, nil
} }
generators = append(generators, file_gen) 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) { io_data.multiple_payload_generator = func(io_data *rc_io_data) (bool, error) {
if len(generators) == 0 { if len(generators) == 0 {
payload := io_data.rc.Payload.(send_text_json_type)
payload.Data = "text:" payload.Data = "text:"
io_data.rc.Payload = payload
return true, nil return true, nil
} }
finished, err := generators[0](io_data) finished, err := generators[0](io_data)

View File

@ -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) { 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 { if len(buf) == 0 {
payload.Data = "" payload.Data = ""
io_data.rc.Payload = payload
return true, nil return true, nil
} }
payload.Data = base64.StdEncoding.EncodeToString(buf) payload.Data = base64.StdEncoding.EncodeToString(buf)
io_data.rc.Payload = payload
buf = buf[:cap(buf)] buf = buf[:cap(buf)]
n, err := f.Read(buf) n, err := f.Read(buf)
if err != nil && err != io.EOF { if err != nil && err != io.EOF {

View File

@ -5,6 +5,7 @@ package at
import ( import (
"bytes" "bytes"
"errors" "errors"
"fmt"
"io" "io"
"net" "net"
"time" "time"
@ -13,6 +14,8 @@ import (
"kitty/tools/wcswidth" "kitty/tools/wcswidth"
) )
var _ = fmt.Print
func write_all_to_conn(conn *net.Conn, data []byte) error { func write_all_to_conn(conn *net.Conn, data []byte) error {
for len(data) > 0 { for len(data) > 0 {
n, err := (*conn).Write(data) n, err := (*conn).Write(data)