diff options
Diffstat (limited to 'crates/shirabe/src/command')
31 files changed, 83 insertions, 85 deletions
diff --git a/crates/shirabe/src/command/about_command.rs b/crates/shirabe/src/command/about_command.rs index 3e74d6e..e3c3614 100644 --- a/crates/shirabe/src/command/about_command.rs +++ b/crates/shirabe/src/command/about_command.rs @@ -4,7 +4,6 @@ use crate::command::BaseCommand; use crate::command::BaseCommandData; use crate::command::HasBaseCommandData; use crate::composer; -use crate::composer::ComposerHandle; use crate::io::IOInterface; use crate::io::IOInterfaceImmutable; use shirabe_external_packages::symfony::component::console::input::InputInterface; diff --git a/crates/shirabe/src/command/archive_command.rs b/crates/shirabe/src/command/archive_command.rs index aab7b51..c777f54 100644 --- a/crates/shirabe/src/command/archive_command.rs +++ b/crates/shirabe/src/command/archive_command.rs @@ -8,7 +8,7 @@ use shirabe_external_packages::symfony::component::console::output::OutputInterf use shirabe_php_shim::{LogicException, get_debug_type}; use crate::command::{BaseCommand, BaseCommandData, HasBaseCommandData}; -use crate::composer::PartialComposerHandle; +use crate::composer::{AnyComposerHandle, Composer, PartialComposer}; use crate::config::Config; use crate::console::input::InputArgument; use crate::console::input::InputOption; @@ -67,10 +67,10 @@ impl ArchiveCommand { let composer = self.try_composer(None, None); let config = if let Some(ref composer) = composer { - let config = composer.borrow_partial().get_config(); + let config = composer.get_config(); // TODO(plugin): dispatch CommandEvent let command_event = CommandEvent::new(PluginEvents::COMMAND, "archive", input, output); - let event_dispatcher = composer.borrow_partial().get_event_dispatcher(); + let event_dispatcher = composer.get_event_dispatcher(); event_dispatcher .borrow_mut() .dispatch(Some(command_event.get_name()), None); @@ -138,7 +138,6 @@ impl ArchiveCommand { && let Some(ref composer) = composer { composer - .borrow_partial() .get_event_dispatcher() .borrow_mut() .dispatch_script( @@ -162,7 +161,7 @@ impl ArchiveCommand { dest: &str, file_name: Option<String>, ignore_filters: bool, - composer: Option<&PartialComposerHandle>, + composer: Option<&AnyComposerHandle>, ) -> Result<i64> { let composer_guard = composer.map(crate::command::composer_full); let owned_archive_manager; diff --git a/crates/shirabe/src/command/audit_command.rs b/crates/shirabe/src/command/audit_command.rs index ec8b495..5868b15 100644 --- a/crates/shirabe/src/command/audit_command.rs +++ b/crates/shirabe/src/command/audit_command.rs @@ -3,7 +3,7 @@ use crate::advisory::AuditConfig; use crate::advisory::Auditor; use crate::command::{BaseCommand, BaseCommandData, HasBaseCommandData}; -use crate::composer::PartialComposerHandle; +use crate::composer::{AnyComposerHandle, Composer, PartialComposer}; use crate::console::input::InputOption; use crate::io::IOInterface; use crate::io::IOInterfaceImmutable; @@ -144,10 +144,10 @@ impl AuditCommand { fn get_packages( &self, - composer: &PartialComposerHandle, + composer: &AnyComposerHandle, input: &dyn InputInterface, ) -> Result<Vec<crate::package::PackageInterfaceHandle>> { - let mut composer = crate::command::composer_full_mut(composer); + let composer = crate::command::composer_full(composer); if input.get_option("locked").as_bool().unwrap_or(false) { let locker = composer.get_locker().clone(); let mut locker = locker.borrow_mut(); diff --git a/crates/shirabe/src/command/base_command.rs b/crates/shirabe/src/command/base_command.rs index 6b673ed..cf121dc 100644 --- a/crates/shirabe/src/command/base_command.rs +++ b/crates/shirabe/src/command/base_command.rs @@ -19,7 +19,7 @@ use std::rc::Rc; use crate::advisory::AuditConfig; use crate::advisory::Auditor; use crate::command::SelfUpdateCommand; -use crate::composer::PartialComposerHandle; +use crate::composer::{AnyComposerHandle, PartialComposer}; use crate::config::Config; use crate::console::Application; use crate::console::input::InputArgument; @@ -163,23 +163,23 @@ pub trait BaseCommand { required: bool, disable_plugins: Option<bool>, disable_scripts: Option<bool>, - ) -> Result<Option<PartialComposerHandle>>; + ) -> Result<Option<AnyComposerHandle>>; /// Retrieves the default Composer\Composer instance or throws fn require_composer( &mut self, disable_plugins: Option<bool>, disable_scripts: Option<bool>, - ) -> Result<PartialComposerHandle>; + ) -> Result<AnyComposerHandle>; /// Retrieves the default Composer\Composer instance or null fn try_composer( &mut self, disable_plugins: Option<bool>, disable_scripts: Option<bool>, - ) -> Option<PartialComposerHandle>; + ) -> Option<AnyComposerHandle>; - fn set_composer(&mut self, composer: PartialComposerHandle); + fn set_composer(&mut self, composer: AnyComposerHandle); /// Removes the cached composer instance fn reset_composer(&mut self) -> Result<()>; @@ -208,7 +208,7 @@ pub trait BaseCommand { config: Option<IndexMap<String, PhpMixed>>, disable_plugins: bool, disable_scripts: Option<bool>, - ) -> Result<PartialComposerHandle>; + ) -> Result<AnyComposerHandle>; /// Returns preferSource and preferDist values based on the configuration. fn get_preferred_install_options( @@ -256,7 +256,7 @@ pub trait BaseCommand { #[derive(Debug)] pub struct BaseCommandData { - pub(crate) composer: Option<PartialComposerHandle>, + pub(crate) composer: Option<AnyComposerHandle>, pub(crate) io: Option<Rc<RefCell<dyn IOInterface>>>, } @@ -264,11 +264,11 @@ pub trait HasBaseCommandData { fn base_command_data(&self) -> &BaseCommandData; fn base_command_data_mut(&mut self) -> &mut BaseCommandData; - fn composer(&self) -> Option<PartialComposerHandle> { + fn composer(&self) -> Option<AnyComposerHandle> { self.base_command_data().composer.clone() } - fn composer_mut(&mut self) -> &mut Option<PartialComposerHandle> { + fn composer_mut(&mut self) -> &mut Option<AnyComposerHandle> { &mut self.base_command_data_mut().composer } @@ -292,7 +292,7 @@ impl<C: HasBaseCommandData> BaseCommand for C { required: bool, disable_plugins: Option<bool>, disable_scripts: Option<bool>, - ) -> Result<Option<PartialComposerHandle>> { + ) -> Result<Option<AnyComposerHandle>> { if required { return Ok(Some( self.require_composer(disable_plugins, disable_scripts)?, @@ -306,7 +306,7 @@ impl<C: HasBaseCommandData> BaseCommand for C { &mut self, _disable_plugins: Option<bool>, _disable_scripts: Option<bool>, - ) -> Result<PartialComposerHandle> { + ) -> Result<AnyComposerHandle> { // TODO(phase-b): depends on Application::get_composer, which is still stubbed. let _ = RuntimeException { message: String::new(), @@ -319,12 +319,12 @@ impl<C: HasBaseCommandData> BaseCommand for C { &mut self, _disable_plugins: Option<bool>, _disable_scripts: Option<bool>, - ) -> Option<PartialComposerHandle> { + ) -> Option<AnyComposerHandle> { // TODO(phase-b): depends on Application::get_composer, which is still stubbed. todo!("try_composer pending Application::get_composer") } - fn set_composer(&mut self, composer: PartialComposerHandle) { + fn set_composer(&mut self, composer: AnyComposerHandle) { *self.composer_mut() = Some(composer); } @@ -388,7 +388,7 @@ impl<C: HasBaseCommandData> BaseCommand for C { ); // TODO(phase-b): event_dispatcher.dispatch expects Option<Event>; need wrapper from // PreCommandRunEvent. - let _ = composer.borrow_partial().get_event_dispatcher(); + let _ = composer.get_event_dispatcher(); let _ = pre_command_run_event.get_name(); } @@ -481,7 +481,7 @@ impl<C: HasBaseCommandData> BaseCommand for C { config: Option<IndexMap<String, PhpMixed>>, disable_plugins: bool, disable_scripts: Option<bool>, - ) -> Result<PartialComposerHandle> { + ) -> Result<AnyComposerHandle> { let disable_plugins = disable_plugins || input.has_parameter_option(&["--no-plugins"], false); let disable_scripts = disable_scripts.unwrap_or(false) diff --git a/crates/shirabe/src/command/base_dependency_command.rs b/crates/shirabe/src/command/base_dependency_command.rs index 7a5300a..8634fa4 100644 --- a/crates/shirabe/src/command/base_dependency_command.rs +++ b/crates/shirabe/src/command/base_dependency_command.rs @@ -10,6 +10,7 @@ use shirabe_semver::constraint::AnyConstraint; use shirabe_semver::constraint::Bound; use crate::command::{BaseCommand, BaseCommandData, HasBaseCommandData}; +use crate::composer::{Composer, PartialComposer}; use crate::io::IOInterface; use crate::io::IOInterfaceImmutable; use crate::package::CompletePackageInterface; @@ -50,7 +51,7 @@ pub trait BaseDependencyCommand: BaseCommand { inverted: bool, ) -> anyhow::Result<i64> { let composer = self.require_composer(None, None)?; - let mut composer = crate::command::composer_full_mut(&composer); + let composer = crate::command::composer_full(&composer); // TODO(plugin): dispatch CommandEvent(PluginEvents::COMMAND, self.get_name(), input, output) via composer.get_event_dispatcher() let mut repos: Vec<Box<dyn RepositoryInterface>> = vec![]; diff --git a/crates/shirabe/src/command/bump_command.rs b/crates/shirabe/src/command/bump_command.rs index a1e5f35..784f570 100644 --- a/crates/shirabe/src/command/bump_command.rs +++ b/crates/shirabe/src/command/bump_command.rs @@ -9,6 +9,7 @@ use shirabe_external_packages::symfony::component::console::output::OutputInterf use shirabe_php_shim::{PhpMixed, file_get_contents, file_put_contents, is_writable, strtolower}; use crate::command::{BaseCommand, BaseCommandData, HasBaseCommandData}; +use crate::composer::{Composer, PartialComposer}; use crate::console::input::InputArgument; use crate::console::input::InputOption; use crate::factory::Factory; @@ -134,7 +135,7 @@ impl BumpCommand { } let composer = self.require_composer(None, None)?; - let mut composer = crate::command::composer_full_mut(&composer); + let composer = crate::command::composer_full(&composer); let has_lock_file_disabled = !composer.get_config().borrow().has("lock") || composer .get_config() diff --git a/crates/shirabe/src/command/check_platform_reqs_command.rs b/crates/shirabe/src/command/check_platform_reqs_command.rs index fd5edd9..a89ce15 100644 --- a/crates/shirabe/src/command/check_platform_reqs_command.rs +++ b/crates/shirabe/src/command/check_platform_reqs_command.rs @@ -9,6 +9,7 @@ use shirabe_semver::constraint::AnyConstraint; use shirabe_semver::constraint::SimpleConstraint; use crate::command::{BaseCommand, BaseCommandData, HasBaseCommandData}; +use crate::composer::{Composer, PartialComposer}; use crate::console::input::InputOption; use crate::io::IOInterface; use crate::io::IOInterfaceImmutable; @@ -55,7 +56,7 @@ impl CheckPlatformReqsCommand { _output: &dyn OutputInterface, ) -> Result<i64> { let composer = self.require_composer(None, None)?; - let mut composer = crate::command::composer_full_mut(&composer); + let composer = crate::command::composer_full(&composer); let io = self.get_io(); let no_dev = input.get_option("no-dev").as_bool().unwrap_or(false); diff --git a/crates/shirabe/src/command/clear_cache_command.rs b/crates/shirabe/src/command/clear_cache_command.rs index 4859a46..152b7a1 100644 --- a/crates/shirabe/src/command/clear_cache_command.rs +++ b/crates/shirabe/src/command/clear_cache_command.rs @@ -2,7 +2,6 @@ use crate::command::{BaseCommand, BaseCommandData, HasBaseCommandData}; use crate::composer; -use crate::composer::ComposerHandle; use crate::factory::Factory; use indexmap::IndexMap; use shirabe_external_packages::symfony::component::console::input::InputInterface; diff --git a/crates/shirabe/src/command/create_project_command.rs b/crates/shirabe/src/command/create_project_command.rs index d5a8a0c..14cf1f5 100644 --- a/crates/shirabe/src/command/create_project_command.rs +++ b/crates/shirabe/src/command/create_project_command.rs @@ -15,7 +15,7 @@ use shirabe_php_shim::{ use crate::advisory::Auditor; use crate::command::{BaseCommand, BaseCommandData, HasBaseCommandData}; -use crate::composer::PartialComposerHandle; +use crate::composer::{AnyComposerHandle, Composer, PartialComposer}; use crate::config::Config; use crate::config::ConfigSourceInterface; use crate::config::JsonConfigSource; @@ -349,7 +349,7 @@ impl CreateProjectCommand { } } - let mut composer = crate::command::composer_full_mut(&composer_handle); + let composer = crate::command::composer_full(&composer_handle); let process = composer .get_loop() @@ -962,7 +962,7 @@ impl CreateProjectCommand { config: Option<indexmap::IndexMap<String, PhpMixed>>, disable_plugins: bool, disable_scripts: Option<bool>, - ) -> Result<PartialComposerHandle> { + ) -> Result<AnyComposerHandle> { self.create_composer_instance(input, io, config, disable_plugins, disable_scripts) } diff --git a/crates/shirabe/src/command/diagnose_command.rs b/crates/shirabe/src/command/diagnose_command.rs index c64fc39..a75e8c0 100644 --- a/crates/shirabe/src/command/diagnose_command.rs +++ b/crates/shirabe/src/command/diagnose_command.rs @@ -21,7 +21,7 @@ use shirabe_php_shim::{ use crate::advisory::Auditor; use crate::command::{BaseCommand, BaseCommandData, HasBaseCommandData}; use crate::composer; -use crate::composer::ComposerHandle; +use crate::composer::{Composer, PartialComposer}; use crate::config::Config; use crate::downloader::TransportException; use crate::factory::Factory; @@ -248,7 +248,7 @@ impl DiagnoseCommand { )); if let Some(ref mut c) = composer { - let mut c = crate::command::composer_full_mut(c); + let c = crate::command::composer_full(c); io.write(&format!( "Active plugins: {}", implode( diff --git a/crates/shirabe/src/command/dump_autoload_command.rs b/crates/shirabe/src/command/dump_autoload_command.rs index 6f361da..bdab00a 100644 --- a/crates/shirabe/src/command/dump_autoload_command.rs +++ b/crates/shirabe/src/command/dump_autoload_command.rs @@ -6,6 +6,7 @@ use shirabe_external_packages::symfony::component::console::output::OutputInterf use shirabe_php_shim::{InvalidArgumentException, PhpMixed, file_exists}; use crate::command::{BaseCommand, BaseCommandData, HasBaseCommandData}; +use crate::composer::{Composer, PartialComposer}; use crate::console::input::InputOption; use crate::io::IOInterface; use crate::io::IOInterfaceImmutable; @@ -48,7 +49,7 @@ impl DumpAutoloadCommand { output: &dyn OutputInterface, ) -> Result<i64> { let composer = self.require_composer(None, None)?; - let mut composer = crate::command::composer_full_mut(&composer); + let composer = crate::command::composer_full(&composer); // TODO(plugin): dispatch CommandEvent let command_event = diff --git a/crates/shirabe/src/command/exec_command.rs b/crates/shirabe/src/command/exec_command.rs index 3f70cf8..824f09e 100644 --- a/crates/shirabe/src/command/exec_command.rs +++ b/crates/shirabe/src/command/exec_command.rs @@ -6,6 +6,7 @@ use shirabe_external_packages::symfony::component::console::output::OutputInterf use shirabe_php_shim::{PhpMixed, RuntimeException, basename, chdir, getcwd, glob}; use crate::command::{BaseCommand, BaseCommandData, HasBaseCommandData}; +use crate::composer::{Composer, PartialComposer}; use crate::console::input::InputArgument; use crate::console::input::InputOption; use crate::io::IOInterface; @@ -87,7 +88,7 @@ impl ExecCommand { { let bins = self.get_binaries(true)?; if bins.is_empty() { - let bin_dir = crate::command::composer_full_mut(&composer) + let bin_dir = crate::command::composer_full(&composer) .get_config() .borrow_mut() .get("bin-dir") @@ -155,7 +156,7 @@ impl ExecCommand { fn get_binaries(&mut self, for_display: bool) -> Result<Vec<String>> { let composer = self.require_composer(None, None)?; - let composer_ref = crate::command::composer_full_mut(&composer); + let composer_ref = crate::command::composer_full(&composer); let bin_dir = composer_ref .get_config() .borrow_mut() diff --git a/crates/shirabe/src/command/fund_command.rs b/crates/shirabe/src/command/fund_command.rs index 340424f..3a671bd 100644 --- a/crates/shirabe/src/command/fund_command.rs +++ b/crates/shirabe/src/command/fund_command.rs @@ -13,6 +13,7 @@ use shirabe_semver::constraint::AnyConstraint; use shirabe_semver::constraint::MatchAllConstraint; use crate::command::{BaseCommand, BaseCommandData, HasBaseCommandData}; +use crate::composer::{Composer, PartialComposer}; use crate::console::input::InputOption; use crate::io::IOInterface; use crate::io::IOInterfaceImmutable; diff --git a/crates/shirabe/src/command/home_command.rs b/crates/shirabe/src/command/home_command.rs index c048bfd..bd0e3aa 100644 --- a/crates/shirabe/src/command/home_command.rs +++ b/crates/shirabe/src/command/home_command.rs @@ -6,6 +6,7 @@ use shirabe_external_packages::symfony::component::console::output::OutputInterf use shirabe_php_shim::{FILTER_VALIDATE_URL, PhpMixed, filter_var}; use crate::command::{BaseCommand, BaseCommandData, HasBaseCommandData}; +use crate::composer::{Composer, PartialComposer}; use crate::console::input::InputArgument; use crate::console::input::InputOption; use crate::io::IOInterface; diff --git a/crates/shirabe/src/command/init_command.rs b/crates/shirabe/src/command/init_command.rs index 730658c..6fc34f2 100644 --- a/crates/shirabe/src/command/init_command.rs +++ b/crates/shirabe/src/command/init_command.rs @@ -19,7 +19,7 @@ use shirabe_php_shim::{ use crate::command::PackageDiscoveryTrait; use crate::command::{BaseCommand, BaseCommandData, HasBaseCommandData}; -use crate::composer::PartialComposerHandle; +use crate::composer::{AnyComposerHandle, Composer, PartialComposer}; use crate::console::input::InputOption; use crate::factory::Factory; use crate::io::IOInterface; @@ -57,7 +57,7 @@ impl PackageDiscoveryTrait for InitCommand { todo!() } - fn try_composer(&self) -> Option<PartialComposerHandle> { + fn try_composer(&self) -> Option<AnyComposerHandle> { todo!() } @@ -65,7 +65,7 @@ impl PackageDiscoveryTrait for InitCommand { &self, disable_plugins: Option<bool>, disable_scripts: Option<bool>, - ) -> PartialComposerHandle { + ) -> AnyComposerHandle { todo!() } diff --git a/crates/shirabe/src/command/install_command.rs b/crates/shirabe/src/command/install_command.rs index 4c869f4..29c8aa1 100644 --- a/crates/shirabe/src/command/install_command.rs +++ b/crates/shirabe/src/command/install_command.rs @@ -7,6 +7,7 @@ use shirabe_php_shim::PhpMixed; use crate::advisory::Auditor; use crate::command::{BaseCommand, BaseCommandData, HasBaseCommandData}; +use crate::composer::{Composer, PartialComposer}; use crate::console::input::InputArgument; use crate::console::input::InputOption; use crate::installer::Installer; @@ -102,7 +103,7 @@ impl InstallCommand { } let composer_handle = self.require_composer(None, None)?; - let mut composer = crate::command::composer_full_mut(&composer_handle); + let composer = crate::command::composer_full(&composer_handle); if !composer.get_locker().borrow_mut().is_locked() && !HttpDownloader::is_curl_enabled() { io.write_error("<warning>Composer is operating significantly slower than normal because you do not have the PHP curl extension enabled.</warning>"); diff --git a/crates/shirabe/src/command/licenses_command.rs b/crates/shirabe/src/command/licenses_command.rs index add5b0b..9dbc3b5 100644 --- a/crates/shirabe/src/command/licenses_command.rs +++ b/crates/shirabe/src/command/licenses_command.rs @@ -12,6 +12,7 @@ use shirabe_external_packages::symfony::console::style::SymfonyStyle; use shirabe_php_shim::{PhpMixed, RuntimeException, UnexpectedValueException}; use crate::command::{BaseCommand, BaseCommandData, HasBaseCommandData}; +use crate::composer::{Composer, PartialComposer}; use crate::console::input::InputOption; use crate::io::IOInterface; use crate::io::IOInterfaceImmutable; @@ -81,7 +82,7 @@ impl LicensesCommand { output: &dyn OutputInterface, ) -> Result<i64> { let composer = self.require_composer(None, None)?; - let mut composer = crate::command::composer_full_mut(&composer); + let composer = crate::command::composer_full(&composer); // TODO(plugin): dispatch COMMAND event for plugin hooks let command_event = CommandEvent::new(PluginEvents::COMMAND, "licenses", input, output); diff --git a/crates/shirabe/src/command/mod.rs b/crates/shirabe/src/command/mod.rs index 4452f85..5e1b437 100644 --- a/crates/shirabe/src/command/mod.rs +++ b/crates/shirabe/src/command/mod.rs @@ -37,7 +37,7 @@ pub mod suggests_command; pub mod update_command; pub mod validate_command; -pub(crate) use crate::composer::{composer_full, composer_full_mut}; +pub(crate) use crate::composer::composer_full; pub use about_command::*; pub use archive_command::*; diff --git a/crates/shirabe/src/command/package_discovery_trait.rs b/crates/shirabe/src/command/package_discovery_trait.rs index d0574c6..e43f401 100644 --- a/crates/shirabe/src/command/package_discovery_trait.rs +++ b/crates/shirabe/src/command/package_discovery_trait.rs @@ -15,7 +15,7 @@ use shirabe_php_shim::{ trim, }; -use crate::composer::PartialComposerHandle; +use crate::composer::{AnyComposerHandle, PartialComposer}; use crate::factory::Factory; use crate::filter::platform_requirement_filter::IgnoreAllPlatformRequirementFilter; use crate::filter::platform_requirement_filter::PlatformRequirementFilterFactory; @@ -40,12 +40,12 @@ pub trait PackageDiscoveryTrait { // PHP: trait dependencies (provided by BaseCommand) fn get_io(&self) -> std::rc::Rc<std::cell::RefCell<dyn IOInterface>>; - fn try_composer(&self) -> Option<PartialComposerHandle>; + fn try_composer(&self) -> Option<AnyComposerHandle>; fn require_composer( &self, disable_plugins: Option<bool>, disable_scripts: Option<bool>, - ) -> PartialComposerHandle; + ) -> AnyComposerHandle; fn get_platform_requirement_filter( &self, input: &dyn InputInterface, @@ -218,10 +218,7 @@ pub trait PackageDiscoveryTrait { // Collect existing packages let composer = self.try_composer(); - let composer_ref = composer.as_ref().map(|c| c.borrow_partial()); - let repository_manager = composer_ref - .as_ref() - .map(|c| c.get_repository_manager().clone()); + let repository_manager = composer.as_ref().map(|c| c.get_repository_manager()); let repository_manager_ref = repository_manager.as_ref().map(|rm| rm.borrow()); let installed_repo = repository_manager_ref .as_ref() @@ -236,7 +233,6 @@ pub trait PackageDiscoveryTrait { drop(installed_repo); drop(repository_manager_ref); drop(repository_manager); - drop(composer_ref); drop(composer); let io = self.get_io(); @@ -816,8 +812,7 @@ pub trait PackageDiscoveryTrait { let mut similar_packages: IndexMap<String, i64> = IndexMap::new(); let composer_for_installed = self.require_composer(None, None); - let composer_for_installed = composer_for_installed.borrow_partial(); - let repository_manager = composer_for_installed.get_repository_manager().clone(); + let repository_manager = composer_for_installed.get_repository_manager(); let repository_manager = repository_manager.borrow(); let installed_repo = repository_manager.get_local_repository(); diff --git a/crates/shirabe/src/command/reinstall_command.rs b/crates/shirabe/src/command/reinstall_command.rs index ad4739b..49f842a 100644 --- a/crates/shirabe/src/command/reinstall_command.rs +++ b/crates/shirabe/src/command/reinstall_command.rs @@ -9,6 +9,7 @@ use shirabe_external_packages::symfony::component::console::output::OutputInterf use shirabe_php_shim::InvalidArgumentException; use crate::command::{BaseCommand, BaseCommandData, HasBaseCommandData}; +use crate::composer::{Composer, PartialComposer}; use crate::console::input::InputArgument; use crate::console::input::InputDefinitionItem; use crate::console::input::InputOption; diff --git a/crates/shirabe/src/command/remove_command.rs b/crates/shirabe/src/command/remove_command.rs index 9ea7329..2b90f80 100644 --- a/crates/shirabe/src/command/remove_command.rs +++ b/crates/shirabe/src/command/remove_command.rs @@ -9,6 +9,7 @@ use shirabe_php_shim::{PhpMixed, UnexpectedValueException, array_map, strtolower use crate::advisory::Auditor; use crate::command::{BaseCommand, BaseCommandData, HasBaseCommandData}; +use crate::composer::{Composer, PartialComposer}; use crate::config::ConfigSourceInterface; use crate::config::JsonConfigSource; use crate::console::input::InputArgument; @@ -184,7 +185,7 @@ impl RemoveCommand { if input.get_option("unused").as_bool().unwrap_or(false) { let composer = self.require_composer(None, None)?; - let mut composer = crate::command::composer_full_mut(&composer); + let composer = crate::command::composer_full(&composer); { let locker = composer.get_locker().clone(); let mut locker = locker.borrow_mut(); @@ -430,7 +431,7 @@ impl RemoveCommand { // TODO(plugin): deactivate installed plugins if let Some(composer_opt) = self.try_composer(None, None) { - let mut composer_opt = crate::command::composer_full_mut(&composer_opt); + let composer_opt = crate::command::composer_full(&composer_opt); composer_opt .get_plugin_manager() .borrow_mut() @@ -439,7 +440,7 @@ impl RemoveCommand { self.reset_composer(); let composer_handle = self.require_composer(None, None)?; - let mut composer = crate::command::composer_full_mut(&composer_handle); + let composer = crate::command::composer_full(&composer_handle); if dry_run { // TODO(phase-b): composer.get_package() returns &dyn RootPackageInterface; set_requires/set_dev_requires need &mut self; needs shared-ownership refactor diff --git a/crates/shirabe/src/command/require_command.rs b/crates/shirabe/src/command/require_command.rs index bf5f159..27626e7 100644 --- a/crates/shirabe/src/command/require_command.rs +++ b/crates/shirabe/src/command/require_command.rs @@ -17,7 +17,7 @@ use shirabe_php_shim::{ use crate::advisory::Auditor; use crate::command::PackageDiscoveryTrait; use crate::command::{BaseCommand, BaseCommandData, HasBaseCommandData}; -use crate::composer::PartialComposerHandle; +use crate::composer::{AnyComposerHandle, Composer, PartialComposer}; use crate::console::input::InputArgument; use crate::console::input::InputOption; use crate::dependency_resolver::Request; @@ -72,7 +72,7 @@ impl PackageDiscoveryTrait for RequireCommand { todo!() } - fn try_composer(&self) -> Option<PartialComposerHandle> { + fn try_composer(&self) -> Option<AnyComposerHandle> { todo!() } @@ -80,7 +80,7 @@ impl PackageDiscoveryTrait for RequireCommand { &self, disable_plugins: Option<bool>, disable_scripts: Option<bool>, - ) -> PartialComposerHandle { + ) -> AnyComposerHandle { todo!() } @@ -688,7 +688,7 @@ impl RequireCommand { // Update packages self.reset_composer()?; let composer_handle = self.require_composer(None, None)?; - let mut composer = crate::command::composer_full_mut(&composer_handle); + let composer = crate::command::composer_full(&composer_handle); self.dependency_resolution_completed = false; // TODO(phase-b): add_listener expects a Callable enum; PHP closure should set @@ -930,7 +930,7 @@ impl RequireCommand { fixed: bool, ) -> Result<i64> { let composer = self.require_composer(None, None)?; - let mut composer = crate::command::composer_full_mut(&composer); + let composer = crate::command::composer_full(&composer); let locker_is_locked = composer.get_locker().borrow_mut().is_locked(); let mut requirements: IndexMap<String, String> = IndexMap::new(); let mut version_selector = VersionSelector::new( diff --git a/crates/shirabe/src/command/run_script_command.rs b/crates/shirabe/src/command/run_script_command.rs index 9118463..8eb6cf2 100644 --- a/crates/shirabe/src/command/run_script_command.rs +++ b/crates/shirabe/src/command/run_script_command.rs @@ -7,6 +7,7 @@ use shirabe_external_packages::symfony::component::console::output::OutputInterf use shirabe_php_shim::{InvalidArgumentException, PhpMixed, RuntimeException}; use crate::command::{BaseCommand, BaseCommandData, HasBaseCommandData}; +use crate::composer::{Composer, PartialComposer}; use crate::console::input::InputArgument; use crate::console::input::InputOption; use crate::io::IOInterface; diff --git a/crates/shirabe/src/command/script_alias_command.rs b/crates/shirabe/src/command/script_alias_command.rs index 6499002..4306605 100644 --- a/crates/shirabe/src/command/script_alias_command.rs +++ b/crates/shirabe/src/command/script_alias_command.rs @@ -1,6 +1,7 @@ //! ref: composer/src/Composer/Command/ScriptAliasCommand.php use crate::command::{BaseCommand, BaseCommandData, HasBaseCommandData}; +use crate::composer::{Composer, PartialComposer}; use crate::console::input::InputArgument; use crate::console::input::InputOption; use crate::io::IOInterface; diff --git a/crates/shirabe/src/command/search_command.rs b/crates/shirabe/src/command/search_command.rs index 2033cfc..313f8b2 100644 --- a/crates/shirabe/src/command/search_command.rs +++ b/crates/shirabe/src/command/search_command.rs @@ -1,6 +1,7 @@ //! ref: composer/src/Composer/Command/SearchCommand.php use crate::command::{BaseCommand, BaseCommandData, HasBaseCommandData}; +use crate::composer::{Composer, PartialComposer}; use crate::console::input::InputArgument; use crate::console::input::InputOption; use crate::io::IOInterface; diff --git a/crates/shirabe/src/command/self_update_command.rs b/crates/shirabe/src/command/self_update_command.rs index fc22ab7..4f0fcf6 100644 --- a/crates/shirabe/src/command/self_update_command.rs +++ b/crates/shirabe/src/command/self_update_command.rs @@ -21,7 +21,6 @@ use shirabe_php_shim::{ use crate::command::{BaseCommand, BaseCommandData, HasBaseCommandData}; use crate::composer; -use crate::composer::ComposerHandle; use crate::config::Config; use crate::console::input::InputArgument; use crate::console::input::InputOption; diff --git a/crates/shirabe/src/command/show_command.rs b/crates/shirabe/src/command/show_command.rs index b72a986..3b50add 100644 --- a/crates/shirabe/src/command/show_command.rs +++ b/crates/shirabe/src/command/show_command.rs @@ -16,7 +16,7 @@ use shirabe_php_shim::{ use shirabe_semver::constraint::AnyConstraint; use crate::command::{BaseCommand, BaseCommandData, HasBaseCommandData}; -use crate::composer::PartialComposerHandle; +use crate::composer::{AnyComposerHandle, Composer, PartialComposer}; use crate::console::input::InputOption; use crate::dependency_resolver::DefaultPolicy; use crate::dependency_resolver::PolicyInterface; @@ -277,7 +277,7 @@ impl ShowCommand { installed_repo = Box::new(ir); } } else if input.get_option("all").as_bool() == Some(true) && composer.is_some() { - let mut composer_ref = crate::command::composer_full_mut(composer.as_ref().unwrap()); + let composer_ref = crate::command::composer_full(composer.as_ref().unwrap()); let local_repo_cloned = composer_ref .get_repository_manager() .borrow() @@ -335,7 +335,7 @@ impl ShowCommand { repos = Box::new(CompositeRepository::new(composite_input)); } else if input.get_option("locked").as_bool() == Some(true) { if composer.is_none() - || !crate::command::composer_full_mut(composer.as_ref().unwrap()) + || !crate::command::composer_full(composer.as_ref().unwrap()) .get_locker() .borrow_mut() .is_locked() @@ -346,7 +346,7 @@ impl ShowCommand { } .into()); } - let mut composer_ref = crate::command::composer_full_mut(composer.as_ref().unwrap()); + let composer_ref = crate::command::composer_full(composer.as_ref().unwrap()); let locker_rc = composer_ref.get_locker().clone(); let mut locker = locker_rc.borrow_mut(); let mut lr = @@ -366,19 +366,9 @@ impl ShowCommand { // TODO(phase-b): PHP shares the Composer object by reference. Phase B // can't clone Composer, so we re-fetch via require_composer when missing // but otherwise borrow the existing Option. - let composer_local_owned; - // Borrow guards that keep the Ref alive for the duration of the block. - let _guard_from_existing; let composer_local = match composer.as_ref() { - Some(c) => { - _guard_from_existing = crate::command::composer_full(c); - &*_guard_from_existing - } - None => { - composer_local_owned = self.require_composer(None, None)?; - _guard_from_existing = crate::command::composer_full(&composer_local_owned); - &*_guard_from_existing - } + Some(c) => crate::command::composer_full(c), + None => crate::command::composer_full(&self.require_composer(None, None)?), }; let root_pkg = composer_local.get_package(); @@ -2542,7 +2532,7 @@ impl ShowCommand { fn find_latest_package( &mut self, package: PackageInterfaceHandle, - composer: &PartialComposerHandle, + composer: &AnyComposerHandle, platform_repo: &PlatformRepository, major_only: bool, minor_only: bool, @@ -2680,7 +2670,7 @@ impl ShowCommand { fn get_repository_set( &mut self, - composer: &PartialComposerHandle, + composer: &AnyComposerHandle, ) -> anyhow::Result<&mut RepositorySet> { let composer = crate::command::composer_full(composer); if self.repository_set.is_none() { diff --git a/crates/shirabe/src/command/status_command.rs b/crates/shirabe/src/command/status_command.rs index 9f66adf..87ab320 100644 --- a/crates/shirabe/src/command/status_command.rs +++ b/crates/shirabe/src/command/status_command.rs @@ -6,6 +6,7 @@ use shirabe_external_packages::symfony::component::console::input::InputInterfac use shirabe_external_packages::symfony::component::console::output::OutputInterface; use crate::command::{BaseCommand, BaseCommandData, HasBaseCommandData}; +use crate::composer::{Composer, PartialComposer}; use crate::console::input::InputOption; use crate::io::IOInterface; use crate::package::dumper::ArrayDumper; @@ -85,7 +86,7 @@ impl StatusCommand { fn do_execute(&mut self, input: &dyn InputInterface) -> Result<i64> { let composer = self.require_composer(None, None)?; - let mut composer = crate::command::composer_full_mut(&composer); + let composer = crate::command::composer_full(&composer); // TODO(phase-b): release the &mut self borrow held by get_io via clone_box. let io_box = self.get_io().clone(); let io_ref = io_box.borrow(); diff --git a/crates/shirabe/src/command/suggests_command.rs b/crates/shirabe/src/command/suggests_command.rs index aa1ae15..cab1ec8 100644 --- a/crates/shirabe/src/command/suggests_command.rs +++ b/crates/shirabe/src/command/suggests_command.rs @@ -1,6 +1,7 @@ //! ref: composer/src/Composer/Command/SuggestsCommand.php use crate::command::{BaseCommand, BaseCommandData, HasBaseCommandData}; +use crate::composer::{Composer, PartialComposer}; use crate::console::input::InputArgument; use crate::console::input::InputOption; use crate::installer::SuggestedPackagesReporter; @@ -45,7 +46,7 @@ impl SuggestsCommand { _output: &dyn OutputInterface, ) -> Result<i64> { let composer = self.require_composer(None, None)?; - let mut composer = crate::command::composer_full_mut(&composer); + let composer = crate::command::composer_full(&composer); let root_package_handle: crate::package::RootPackageInterfaceHandle = composer.get_package().clone(); diff --git a/crates/shirabe/src/command/update_command.rs b/crates/shirabe/src/command/update_command.rs index f879283..c61e28a 100644 --- a/crates/shirabe/src/command/update_command.rs +++ b/crates/shirabe/src/command/update_command.rs @@ -18,7 +18,7 @@ use shirabe_semver::intervals::Intervals; use crate::advisory::Auditor; use crate::command::BumpCommand; use crate::command::{BaseCommand, BaseCommandData, HasBaseCommandData}; -use crate::composer::PartialComposerHandle; +use crate::composer::{AnyComposerHandle, Composer, PartialComposer}; use crate::console::input::InputArgument; use crate::console::input::InputOption; use crate::dependency_resolver::request::{self, Request, UpdateAllowTransitiveDeps}; @@ -460,7 +460,7 @@ impl UpdateCommand { io: &dyn IOInterface, input: &dyn InputInterface, output: &dyn OutputInterface, - composer: &PartialComposerHandle, + composer: &AnyComposerHandle, packages: Vec<String>, ) -> Result<Vec<String>> { if !input.is_interactive() { @@ -618,7 +618,7 @@ impl UpdateCommand { .into()) } - fn create_version_selector(&self, composer: &PartialComposerHandle) -> Result<VersionSelector> { + fn create_version_selector(&self, composer: &AnyComposerHandle) -> Result<VersionSelector> { let composer = crate::command::composer_full(composer); let mut repository_set = RepositorySet::new( &composer.get_package().get_minimum_stability(), diff --git a/crates/shirabe/src/command/validate_command.rs b/crates/shirabe/src/command/validate_command.rs index 12eadd7..3e8fbf1 100644 --- a/crates/shirabe/src/command/validate_command.rs +++ b/crates/shirabe/src/command/validate_command.rs @@ -5,6 +5,7 @@ use shirabe_external_packages::symfony::component::console::input::InputInterfac use shirabe_external_packages::symfony::component::console::output::OutputInterface; use crate::command::{BaseCommand, BaseCommandData, HasBaseCommandData}; +use crate::composer::{Composer, PartialComposer}; use crate::console::input::InputArgument; use crate::console::input::InputOption; use crate::factory::Factory; @@ -158,7 +159,7 @@ impl ValidateCommand { let mut lock_errors: Vec<String> = vec![]; let composer = self.create_composer_instance(input, io_box.clone(), None, false, None)?; - let mut composer = crate::command::composer_full_mut(&composer); + let composer = crate::command::composer_full(&composer); let check_lock = (check_lock && composer .get_config() |
