#![forbid(unsafe_code)]
#![allow(unused_imports)]
use super::*;
pub(crate) fn designated_target(name: &str) -> crate::json_wire::ExecTarget {
crate::json_wire::ExecTarget::new(name, crate::json_wire::TargetSource::Argv)
}
pub(crate) fn publish_target(name: &str) -> crate::json_wire::ExecTarget {
let target = designated_target(name);
crate::json_wire::set_resolved_target(&target);
target
}
pub(crate) fn emit_transfer(
direction: &str,
target: &crate::json_wire::ExecTarget,
local: &str,
remote: &str,
result: TransferResult,
json: bool,
recursive: bool,
) -> anyhow::Result<()> {
if json {
output::print_sftp_transfer_json(
direction,
target,
local,
remote,
result.bytes_transferred,
result.duration_ms,
recursive,
)?;
} else {
let msg = if direction == "upload" {
Message::SftpUploadCompleted {
bytes: result.bytes_transferred,
ms: result.duration_ms,
}
} else {
Message::SftpDownloadCompleted {
bytes: result.bytes_transferred,
ms: result.duration_ms,
}
};
output::print_success(&i18n::t(msg));
}
Ok(())
}
pub(crate) fn emit_list(
vps: &str,
path: &str,
entries: &[SftpListEntry],
json: bool,
) -> anyhow::Result<()> {
if json {
output::print_sftp_list_json(vps, path, entries)?;
} else {
for e in entries {
output::write_line_fmt(format_args!(
"{}\t{}\t{}",
e.kind,
e.size.map(|s| s.to_string()).unwrap_or_else(|| "-".into()),
e.path
))?;
}
}
Ok(())
}
pub(crate) fn emit_stat(vps: &str, st: &SftpStat, json: bool) -> anyhow::Result<()> {
if json {
output::print_sftp_stat_json(vps, st)?;
} else {
output::write_line_fmt(format_args!(
"path={} kind={} size={} mode={:?} mtime={:?}",
st.path,
st.kind,
st.size.map(|s| s.to_string()).unwrap_or_else(|| "-".into()),
st.mode,
st.mtime
))?;
}
Ok(())
}
pub(crate) fn emit_fs_op(
op: &str,
vps: &str,
path: &str,
to: Option<&str>,
duration_ms: u64,
json: bool,
) -> anyhow::Result<()> {
if json {
output::print_sftp_fs_op_json(op, vps, path, to, duration_ms)?;
} else {
let msg = match to {
Some(t) => i18n::Message::SftpFsOpDoneTo {
op: op.to_string(),
path: path.to_string(),
to: t.to_string(),
ms: duration_ms,
},
None => i18n::Message::SftpFsOpDone {
op: op.to_string(),
path: path.to_string(),
ms: duration_ms,
},
};
output::print_success(&i18n::t(msg));
}
Ok(())
}