From 7c2b5fba432c22d5f911e7933d9b0579e0586eca Mon Sep 17 00:00:00 2001 From: arabian Date: Tue, 18 Mar 2025 23:17:15 +0300 Subject: [PATCH] fixed fs error on linux --- src/main.rs | 54 ++++++++++++++++++++++++++++------------------------- 1 file changed, 29 insertions(+), 25 deletions(-) diff --git a/src/main.rs b/src/main.rs index ebece43..262d671 100644 --- a/src/main.rs +++ b/src/main.rs @@ -89,39 +89,43 @@ fn main() -> Result<(), Error> { let current_dir: PathBuf = absolute(Path::new("."))?; let temp_path: PathBuf = current_dir.join("temp"); + let mod_path: PathBuf = temp_path.join("mod"); if temp_path.exists() { remove_dir_all(&temp_path)?; } create_dir(&temp_path)?; + create_dir(&mod_path)?; - copy(&manifest_path, temp_path.join("manifest"))?; + copy(&manifest_path, mod_path.join("manifest"))?; #[cfg(target_os = "windows")] - let build_romfs_path = current_dir.join("build_romfs.exe"); + let build_romfs_path = temp_path.join("build_romfs.exe"); #[cfg(target_os = "windows")] - let build_pfs0_path = current_dir.join("build_pfs0.exe"); + let build_pfs0_path = temp_path.join("build_pfs0.exe"); #[cfg(not(target_os = "windows"))] - let build_romfs_path: PathBuf = current_dir.join("build_romfs"); + let build_romfs_path: PathBuf = temp_path.join("build_romfs"); #[cfg(not(target_os = "windows"))] - let build_pfs0_path: PathBuf = current_dir.join("build_pfs0"); + let build_pfs0_path: PathBuf = temp_path.join("build_pfs0"); - let mut build_romfs_file: File = File::create(&build_romfs_path)?; - build_romfs_file.write_all(BUILD_ROMFS_BIN)?; - #[cfg(not(target_os = "windows"))] - set_permissions( - &build_romfs_path, - std::os::unix::fs::PermissionsExt::from_mode(0o755), - )?; + { + let mut build_romfs_file: File = File::create(&build_romfs_path)?; + build_romfs_file.write_all(BUILD_ROMFS_BIN)?; + #[cfg(not(target_os = "windows"))] + set_permissions( + &build_romfs_path, + std::os::unix::fs::PermissionsExt::from_mode(0o755), + )?; - let mut build_pfs0_file: File = File::create(&build_pfs0_path)?; - build_pfs0_file.write_all(BUILD_PFS0_BIN)?; - #[cfg(not(target_os = "windows"))] - set_permissions( - &build_pfs0_path, - std::os::unix::fs::PermissionsExt::from_mode(0o755), - )?; + let mut build_pfs0_file: File = File::create(&build_pfs0_path)?; + build_pfs0_file.write_all(BUILD_PFS0_BIN)?; + #[cfg(not(target_os = "windows"))] + set_permissions( + &build_pfs0_path, + std::os::unix::fs::PermissionsExt::from_mode(0o755), + )?; + } let all_items: Vec = list_items(&input_path)?; let files_to_copy: HashSet<&&str> = FILES_TO_COPY.iter().collect(); @@ -131,30 +135,30 @@ fn main() -> Result<(), Error> { if item.is_dir() && name == "romfs" { println!("Found romfs directory. Building romfs.bin..."); std::process::Command::new(&build_romfs_path) - .current_dir(&temp_path) + .current_dir(&mod_path) .arg(&item) - .arg(&temp_path.join("romfs.bin")) + .arg(&mod_path.join("romfs.bin")) .status()?; continue; } if files_to_copy.contains(&&name) { println!("Found {}, copying...", name); - copy(&item, &temp_path.join(name))?; + copy(&item, &mod_path.join(name))?; continue; } if name.ends_with(".ips") { println!("Found {}, copying...", name); - copy(&item, &temp_path.join(name))?; + copy(&item, &mod_path.join(name))?; continue; } } println!("Building {}...", output_path.display()); std::process::Command::new(&build_pfs0_path) - .current_dir(&temp_path) - .arg(&temp_path) + .current_dir(&mod_path) + .arg(&mod_path) .arg(&output_path) .status()?;