rust #1

Merged
chaos merged 8 commits from rust into main 2025-08-17 19:41:08 +01:00
2 changed files with 20 additions and 11 deletions
Showing only changes of commit 8d58e50847 - Show all commits

View file

@ -8,4 +8,5 @@ edition = "2021"
[dependencies] [dependencies]
anyhow = "1.0.82" anyhow = "1.0.82"
clap = { version = "4.5.4", features = ["derive"] } clap = { version = "4.5.4", features = ["derive"] }
fs_extra = "1.3.0"
tempfile = "3.10.1" tempfile = "3.10.1"

View file

@ -79,18 +79,26 @@ fn transfer_files(source_path: &Path) -> Result<()> {
let is_empty = fs::read_dir(source_path)?.next().is_none(); let is_empty = fs::read_dir(source_path)?.next().is_none();
if !is_empty { if !is_empty {
println!("[INFO] Transferring files to NAS..."); if NAS_HOST == "localhost" {
let mut scp_cmd = Command::new("scp"); println!("[INFO] NAS_HOST is localhost, copying files locally...");
let source = format!( let mut options = fs_extra::dir::CopyOptions::new();
"{}/.", options.content_only = true;
source_path.to_str().context("Invalid source path")? fs_extra::dir::copy(source_path, NAS_PATH, &options)
); .context("Failed to copy files locally")?;
let destination = format!("{}@{}:{}", NAS_USER, NAS_HOST, NAS_PATH); } else {
scp_cmd.args(["-r", &source, &destination]); println!("[INFO] Transferring files to NAS via scp...");
let mut scp_cmd = Command::new("scp");
let source = format!(
"{}/.",
source_path.to_str().context("Invalid source path")?
);
let destination = format!("{}@{}:{}", NAS_USER, NAS_HOST, NAS_PATH);
scp_cmd.args(["-r", &source, &destination]);
let status = scp_cmd.status().context("Failed to execute scp")?; let status = scp_cmd.status().context("Failed to execute scp")?;
if !status.success() { if !status.success() {
anyhow::bail!("scp failed with status: {}", status); anyhow::bail!("scp failed with status: {}", status);
}
} }
} else { } else {
println!("[WARN] No files found to transfer."); println!("[WARN] No files found to transfer.");