From dfd98ce4b227a3a14dc913c669bee4f077a65178 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sun, 9 Aug 2026 09:34:34 +0900 Subject: refactor(php-shim): make the fs mutators return Result mkdir, rmdir, unlink and symlink each had a bool version and a _result twin returning the io::Error, which left two names for one call. Keep only the Result form and let the callers that want a boolean spell out .is_ok(). Call sites that discard the outcome, as their PHP originals do, are unchanged. Co-Authored-By: Claude Opus 5 (1M context) --- crates/shirabe/src/cache.rs | 3 ++- crates/shirabe/src/console/application.rs | 2 +- crates/shirabe/src/factory.rs | 2 +- crates/shirabe/src/json/json_file.rs | 2 +- crates/shirabe/src/util/filesystem.rs | 14 +++++++------- 5 files changed, 12 insertions(+), 11 deletions(-) (limited to 'crates/shirabe/src') diff --git a/crates/shirabe/src/cache.rs b/crates/shirabe/src/cache.rs index a9f56eac..14f7287f 100644 --- a/crates/shirabe/src/cache.rs +++ b/crates/shirabe/src/cache.rs @@ -106,7 +106,8 @@ impl Cache { if !self.read_only && ((!is_dir(&self.root) - && !Silencer::call(|| Ok(mkdir(&self.root, 0o777, true))).unwrap_or(false)) + && !Silencer::call(|| Ok(mkdir(&self.root, 0o777, true).is_ok())) + .unwrap_or(false)) || !is_writable(&self.root)) { self.io.write_error(&format!( diff --git a/crates/shirabe/src/console/application.rs b/crates/shirabe/src/console/application.rs index bf1f3575..05cd1d22 100644 --- a/crates/shirabe/src/console/application.rs +++ b/crates/shirabe/src/console/application.rs @@ -2335,7 +2335,7 @@ impl ApplicationHandle { ); if !(file_put_contents(&tempfile, file!().as_bytes()).is_some_and(|n| n > 0) && file_get_contents(&tempfile).as_deref() == Some(file!()) - && unlink(&tempfile) + && unlink(&tempfile).is_ok() && !file_exists(&tempfile)) { return Ok(Some(format!("PHP temp directory ({}) does not exist or is not writable to Composer. Set sys_temp_dir in your php.ini", sys_get_temp_dir()))); diff --git a/crates/shirabe/src/factory.rs b/crates/shirabe/src/factory.rs index d7439d58..18ff8ef5 100644 --- a/crates/shirabe/src/factory.rs +++ b/crates/shirabe/src/factory.rs @@ -299,7 +299,7 @@ impl Factory { if !is_dir(dir) { let dir_owned = dir.clone(); let _ = Silencer::call(|| { - Ok::(mkdir(&dir_owned, 0o777, true)) + Ok::(mkdir(&dir_owned, 0o777, true).is_ok()) }); } let path = format!("{}/.htaccess", dir); diff --git a/crates/shirabe/src/json/json_file.rs b/crates/shirabe/src/json/json_file.rs index feb72764..4c74b83e 100644 --- a/crates/shirabe/src/json/json_file.rs +++ b/crates/shirabe/src/json/json_file.rs @@ -237,7 +237,7 @@ impl JsonFile { .into()); } // PHP: @mkdir($dir, 0777, true) - if !Silencer::call(|| Ok(mkdir(&dir, 0o777, true))).unwrap_or(false) { + if !Silencer::call(|| Ok(mkdir(&dir, 0o777, true).is_ok())).unwrap_or(false) { return Err(UnexpectedValueException::new(format!( "{} does not exist and could not be created.", dir diff --git a/crates/shirabe/src/util/filesystem.rs b/crates/shirabe/src/util/filesystem.rs index 2c4cbcc6..925cb38a 100644 --- a/crates/shirabe/src/util/filesystem.rs +++ b/crates/shirabe/src/util/filesystem.rs @@ -240,7 +240,7 @@ impl Filesystem { } if is_link(directory) { - return Ok(Some(unlink(directory))); + return Ok(Some(unlink(directory).is_ok())); } if !is_dir(directory) || !file_exists(directory) { @@ -328,7 +328,7 @@ impl Filesystem { .into()); } - if !mkdir(directory, 0o777, true) { + if mkdir(directory, 0o777, true).is_err() { let e = RuntimeException::new(format!( "{} does not exist and could not be created: {}", directory, @@ -393,12 +393,12 @@ impl Filesystem { /// Attempts to rmdir a file and in case of failure retries after 350ms on windows pub fn rmdir(&self, path: impl AsRef) -> anyhow::Result { let path = path.as_ref(); - let mut deleted = rmdir(path); + let mut deleted = rmdir(path).is_ok(); if !deleted { // retry after a bit on windows since it tends to be touchy with mass removals if Platform::is_windows() { usleep(350000); - deleted = rmdir(path); + deleted = rmdir(path).is_ok(); } if !deleted { @@ -922,10 +922,10 @@ impl Filesystem { /// symbolic links on windows which link to directories need rmdir instead of unlink fn unlink_implementation(&self, path: &Path) -> bool { if Platform::is_windows() && is_dir(path) && is_link(path) { - return rmdir(path); + return rmdir(path).is_ok(); } - unlink(path) + unlink(path).is_ok() } /// Creates a relative symlink from $link to $target @@ -938,7 +938,7 @@ impl Filesystem { let relative_path = self.find_shortest_path(link, target, false, false); chdir(dirname(link)); - let result = symlink(&relative_path, link); + let result = symlink(&relative_path, link).is_ok(); chdir(&cwd); -- cgit v1.3.1-4-g156e