diff options
Diffstat (limited to 'crates/shirabe/src/util')
| -rw-r--r-- | crates/shirabe/src/util/filesystem.rs | 7 | ||||
| -rw-r--r-- | crates/shirabe/src/util/sync_helper.rs | 30 |
2 files changed, 24 insertions, 13 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() diff --git a/crates/shirabe/src/util/sync_helper.rs b/crates/shirabe/src/util/sync_helper.rs index 6cf2467..4c48c5c 100644 --- a/crates/shirabe/src/util/sync_helper.rs +++ b/crates/shirabe/src/util/sync_helper.rs @@ -20,8 +20,8 @@ impl<'a> DownloaderOrManager<'a> { prev_package: Option<&dyn PackageInterface>, ) -> Result<Option<PhpMixed>> { match self { - Self::Interface(d) => d.download3(package, path, prev_package), - Self::Manager(d) => d.borrow().download(package, path, prev_package), + Self::Interface(d) => d.download3(package, path, prev_package).await, + Self::Manager(d) => d.borrow().download(package, path, prev_package).await, } } @@ -33,8 +33,12 @@ impl<'a> DownloaderOrManager<'a> { prev_package: Option<&dyn PackageInterface>, ) -> Result<Option<PhpMixed>> { match self { - Self::Interface(d) => d.prepare(r#type, package, path, prev_package), - Self::Manager(d) => d.borrow().prepare(r#type, package, path, prev_package), + Self::Interface(d) => d.prepare(r#type, package, path, prev_package).await, + Self::Manager(d) => { + d.borrow() + .prepare(r#type, package, path, prev_package) + .await + } } } @@ -44,8 +48,8 @@ impl<'a> DownloaderOrManager<'a> { path: &str, ) -> Result<Option<PhpMixed>> { match self { - Self::Interface(d) => d.install2(package, path), - Self::Manager(d) => d.borrow().install(package, path), + Self::Interface(d) => d.install2(package, path).await, + Self::Manager(d) => d.borrow().install(package, path).await, } } @@ -56,8 +60,8 @@ impl<'a> DownloaderOrManager<'a> { path: &str, ) -> Result<Option<PhpMixed>> { match self { - Self::Interface(d) => d.update(package, prev_package, path), - Self::Manager(d) => d.borrow().update(package, prev_package, path), + Self::Interface(d) => d.update(package, prev_package, path).await, + Self::Manager(d) => d.borrow().update(package, prev_package, path).await, } } @@ -69,8 +73,12 @@ impl<'a> DownloaderOrManager<'a> { prev_package: Option<&dyn PackageInterface>, ) -> Result<Option<PhpMixed>> { match self { - Self::Interface(d) => d.cleanup(r#type, package, path, prev_package), - Self::Manager(d) => d.borrow().cleanup(r#type, package, path, prev_package), + Self::Interface(d) => d.cleanup(r#type, package, path, prev_package).await, + Self::Manager(d) => { + d.borrow() + .cleanup(r#type, package, path, prev_package) + .await + } } } } @@ -78,6 +86,7 @@ impl<'a> DownloaderOrManager<'a> { pub struct SyncHelper; impl SyncHelper { + // TODO(phase-c-promise): synchronous wrapper driving now-async downloader calls via Self::await (loop.wait); needs async/loop boundary design. pub fn download_and_install_package_sync( r#loop: &std::rc::Rc<std::cell::RefCell<Loop>>, downloader: DownloaderOrManager<'_>, @@ -125,6 +134,7 @@ impl SyncHelper { Ok(()) } + // TODO(phase-c-promise): loop-pump synchronous wait over a promise; driving mechanism needs design. pub fn r#await( r#loop: &std::rc::Rc<std::cell::RefCell<Loop>>, promise: Option<Box<dyn PromiseInterface>>, |
