diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-06-06 20:03:54 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-06-06 20:03:54 +0900 |
| commit | 87f7f1b0f875e9cf26b84bd45dd48226a33749cb (patch) | |
| tree | 1f6f32a209422c8e973b7f5f4e696e09d1cb88c7 /crates/shirabe/src/command | |
| parent | 8ae5842647eb9be63e662d11cea7268f5ecb0202 (diff) | |
| download | php-shirabe-87f7f1b0f875e9cf26b84bd45dd48226a33749cb.tar.gz php-shirabe-87f7f1b0f875e9cf26b84bd45dd48226a33749cb.tar.zst php-shirabe-87f7f1b0f875e9cf26b84bd45dd48226a33749cb.zip | |
feat(archive-command): wire up ArchiveManager.archive call
Replace the phase-b todo!() with the real ArchiveManager.archive
invocation by taking the manager via mutable borrow (borrow_mut for the
composer-owned RefCell, &mut for the locally created one). Also drop the
stale get_io clone_box TODOs in archive and search commands, reusing the
already-fetched io handle in search.
Diffstat (limited to 'crates/shirabe/src/command')
| -rw-r--r-- | crates/shirabe/src/command/archive_command.rs | 29 | ||||
| -rw-r--r-- | crates/shirabe/src/command/search_command.rs | 4 |
2 files changed, 16 insertions, 17 deletions
diff --git a/crates/shirabe/src/command/archive_command.rs b/crates/shirabe/src/command/archive_command.rs index bf3a0c1..c950eaa 100644 --- a/crates/shirabe/src/command/archive_command.rs +++ b/crates/shirabe/src/command/archive_command.rs @@ -114,10 +114,9 @@ impl ArchiveCommand { .to_string() }); - // TODO(phase-b): clone_box to release self borrow held by get_io. - let io_box = self.get_io().clone(); + let io = self.get_io().clone(); let return_code = self.archive( - io_box.clone(), + io.clone(), &config, input .borrow() @@ -175,13 +174,13 @@ impl ArchiveCommand { composer: Option<&PartialComposerHandle>, ) -> Result<i64> { let composer_guard = composer.map(crate::command::composer_full); - let owned_archive_manager; + let mut owned_archive_manager; let composer_archive_manager; - let composer_archive_manager_ref; - let archive_manager: &ArchiveManager = if let Some(composer) = &composer_guard { + let mut composer_archive_manager_ref; + let archive_manager: &mut ArchiveManager = if let Some(composer) = &composer_guard { composer_archive_manager = composer.get_archive_manager().clone(); - composer_archive_manager_ref = composer_archive_manager.borrow(); - &composer_archive_manager_ref + composer_archive_manager_ref = composer_archive_manager.borrow_mut(); + &mut composer_archive_manager_ref } else { let factory = Factory; let process = std::rc::Rc::new(std::cell::RefCell::new(ProcessExecutor::new(None))); @@ -201,7 +200,7 @@ impl ArchiveCommand { ))); owned_archive_manager = factory.create_archive_manager(&*config.borrow(), &download_manager, &loop_)?; - &owned_archive_manager + &mut owned_archive_manager }; let package: crate::package::CompletePackageInterfaceHandle = @@ -220,11 +219,13 @@ impl ArchiveCommand { "<info>Creating the archive into \"{}\".</info>", dest )); - // TODO(phase-b): ArchiveManager.archive needs &mut self and &mut CompletePackageInterface; - // current composer.get_archive_manager() returns &ArchiveManager. Needs RefCell wrapper. - let _ = archive_manager; - let _ = (&package, format, dest, file_name.as_deref(), ignore_filters); - let package_path: String = todo!("ArchiveManager.archive call"); + let package_path: String = archive_manager.archive( + package, + format.to_string(), + dest.to_string(), + file_name, + ignore_filters, + )?; let fs = Filesystem::new(None); let short_path = fs.find_shortest_path(&Platform::get_cwd(false)?, &package_path, true, false); diff --git a/crates/shirabe/src/command/search_command.rs b/crates/shirabe/src/command/search_command.rs index 7149db7..bf68b2d 100644 --- a/crates/shirabe/src/command/search_command.rs +++ b/crates/shirabe/src/command/search_command.rs @@ -75,9 +75,7 @@ impl SearchCommand { let composer = if let Some(c) = self.try_composer(None, None) { c } else { - // TODO(phase-b): clone_box to release self borrow held by get_io. - let io_box = self.get_io().clone(); - self.create_composer_instance(input.clone(), io_box, None, false, None)? + self.create_composer_instance(input.clone(), io.clone(), None, false, None)? }; let composer_ref = crate::command::composer_full(&composer); let local_repo = composer_ref |
