1#![forbid(unsafe_code)]
4use crate::cli::SftpAction;
11use crate::constants::SFTP_FALLBACK_BASENAME;
12use crate::errors::SshCliError;
13use crate::i18n::{self, Message};
14use crate::output;
15use crate::ssh::client::{SshClient, TransferResult};
16use crate::ssh::sftp_path::{ensure_local_under, validate_entry_name};
17use crate::ssh::sftp_session;
18use crate::ssh::sftp_types::{SftpListEntry, SftpStat};
19use crate::vps;
20use std::path::{Path, PathBuf};
21use std::time::Instant;
22
23pub(crate) mod batch;
24
25mod dispatch;
27mod emit;
28mod setup;
29
30pub use dispatch::run_sftp;
31pub(crate) use emit::{
32 designated_target, emit_fs_op, emit_list, emit_stat, emit_transfer, publish_target,
33};
34pub(crate) use setup::apply_sftp_options;
35pub use setup::SftpOptions;
36pub(crate) use setup::{connect_client, remote_str};