Canonicalize upload directory when uploading to local

This commit is contained in:
Leonard Steppy 2025-02-03 00:51:56 +01:00
parent da2b6097e9
commit 329ba8f381

View File

@ -181,7 +181,7 @@ fn main() -> Result<(), String> {
files, files,
file_server, file_server,
old_version_policy, old_version_policy,
upload_directory, mut upload_directory,
no_confirm, no_confirm,
file_name, file_name,
} => { } => {
@ -234,6 +234,15 @@ fn main() -> Result<(), String> {
let actions = servers let actions = servers
.iter() .iter()
.map(|server| { .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); let working_directory = server.server_directory_path.join(&upload_directory);
Ok(ServerActions { Ok(ServerActions {
server, server,
@ -658,6 +667,7 @@ mod test {
assert_eq!(PathBuf::from("/home"), joined); assert_eq!(PathBuf::from("/home"), joined);
} }
/// When renaming a file in a folder, the folder is relevant in the new name
#[test] #[test]
fn rename_experiment() { fn rename_experiment() {
fs::rename("test-ressources/files/test", "test-ressources/files/test1") 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") fs::rename("test-ressources/files/test1", "test-ressources/files/test")
.expect("failed to rename test1 file back to 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");
}
} }