From 329ba8f38190d7bc88ec6f5a683208482b57fcda Mon Sep 17 00:00:00 2001 From: Steppy Date: Mon, 3 Feb 2025 00:51:56 +0100 Subject: [PATCH] Canonicalize upload directory when uploading to local --- src/main.rs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/main.rs b/src/main.rs index 16095a5..72de303 100644 --- a/src/main.rs +++ b/src/main.rs @@ -181,7 +181,7 @@ fn main() -> Result<(), String> { files, file_server, old_version_policy, - upload_directory, + mut upload_directory, no_confirm, file_name, } => { @@ -234,6 +234,15 @@ fn main() -> Result<(), String> { let actions = servers .iter() .map(|server| { + //on local server canonicalize upload_directory + if let ServerAddress::Localhost = &server.address { + //create upload directory if it doesn't exist + fs::create_dir_all(&upload_directory) + .map_err(|e| format!("Failed to create upload-directory: {e}"))?; + + upload_directory = fs::canonicalize(&upload_directory) + .map_err(|e| format!("failed to resolve upload-directory: {e}"))?; + } let working_directory = server.server_directory_path.join(&upload_directory); Ok(ServerActions { server, @@ -658,6 +667,7 @@ mod test { assert_eq!(PathBuf::from("/home"), joined); } + /// When renaming a file in a folder, the folder is relevant in the new name #[test] fn rename_experiment() { fs::rename("test-ressources/files/test", "test-ressources/files/test1") @@ -665,4 +675,10 @@ mod test { fs::rename("test-ressources/files/test1", "test-ressources/files/test") .expect("failed to rename test1 file back to test"); } + + #[test] + fn mkdir_experiment() { + fs::create_dir_all("./test-ressources/files/../python") + .expect("failed to create directory with relative path"); + } }