diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-05-23 03:07:15 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-05-23 15:48:00 +0900 |
| commit | e068a9d644fde6659a88accd55b3f1d0d9d7cf46 (patch) | |
| tree | bb719a70eb8c840957a94a5601df8961055ceb0f /crates/shirabe/src/util/filesystem.rs | |
| parent | 60eb89529c8af2e4477e0bb65ed9e0f2dc7d3dd7 (diff) | |
| download | php-shirabe-e068a9d644fde6659a88accd55b3f1d0d9d7cf46.tar.gz php-shirabe-e068a9d644fde6659a88accd55b3f1d0d9d7cf46.tar.zst php-shirabe-e068a9d644fde6659a88accd55b3f1d0d9d7cf46.zip | |
refactor(promise): rewrite promise bodies to async/await
Mechanically convert promise-returning function bodies to async/await:
resolve() returns the value directly, forwarding calls get .await, and
simple .then chains become await sequences. Also collapse the installer
double-Option (Result<Option<Option<PhpMixed>>> -> Result<Option<PhpMixed>>).
Hard spots that depend on the Loop::wait / job-machine boundary
(accept/reject orchestration, closures capturing &mut self, batch waits)
are left intact and marked with TODO(phase-c-promise) for manual porting.
The crate does not compile yet; traits still need #[async_trait].
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/util/filesystem.rs')
| -rw-r--r-- | crates/shirabe/src/util/filesystem.rs | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/crates/shirabe/src/util/filesystem.rs b/crates/shirabe/src/util/filesystem.rs index 39b5e6b..1bf4673 100644 --- a/crates/shirabe/src/util/filesystem.rs +++ b/crates/shirabe/src/util/filesystem.rs @@ -135,9 +135,7 @@ impl Filesystem { pub async fn remove_directory_async(&mut self, directory: &str) -> anyhow::Result<bool> { let edge_case_result = self.remove_edge_cases(directory, true)?; if let Some(r) = edge_case_result { - return Ok(shirabe_external_packages::react::promise::resolve(Some( - PhpMixed::Bool(r), - ))); + return Ok(r); } let cmd: Vec<String> = if Platform::is_windows() { @@ -151,6 +149,9 @@ impl Filesystem { vec!["rm".to_string(), "-rf".to_string(), directory.to_string()] }; + // TODO(phase-c-promise): execute_async is now async fn -> Result<Process>; the .then_boxed continuation that + // inspects the process result and flattens into a recursive removeDirectoryPhp fallback needs job-machine + // boundary design before it can become a flat await chain. let promise = self.get_process().execute_async( PhpMixed::List( cmd.iter() |
