More work on file transfer

This commit is contained in:
Kovid Goyal 2021-10-31 20:05:48 +05:30
parent bc1c19b4f7
commit 218582ced8
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -9,7 +9,7 @@ from typing import Dict, Iterator, List, Optional
from kitty.cli_stub import TransferCLIOptions
from kitty.fast_data_types import FILE_TRANSFER_CODE
from kitty.file_transmission import (
Action, FileTransmissionCommand, NameReprEnum, encode_bypass
Action, FileTransmissionCommand, FileType, NameReprEnum, encode_bypass
)
from kitty.typing import KeyEventType
from kitty.utils import sanitize_control_codes
@ -146,6 +146,12 @@ class Manager:
for i, x in enumerate(self.spec):
yield FileTransmissionCommand(action=Action.file, file_id=str(i), name=x).serialize()
def request_files(self) -> Iterator[str]:
for f in self.files:
if f.ftype is FileType.directory:
continue
yield FileTransmissionCommand(action=Action.file, name=f.remote_path).serialize()
def collect_files(self, cli_opts: TransferCLIOptions) -> None:
self.files = list(files_for_receive(cli_opts, self.dest, self.files, self.remote_home, self.spec))
self.total_transfer_size = sum(max(0, f.expected_size) for f in self.files)
@ -295,6 +301,8 @@ class Receive(Handler):
def start_transfer(self) -> None:
self.transmit_started = True
self.print(f'Queueing transfer of {len(self.manager.files)} files(s)')
for x in self.manager.request_files():
self.send_payload(x)
def print_err(self, msg: str) -> None:
self.cmd.styled(msg, fg='red')