aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/command
diff options
context:
space:
mode:
Diffstat (limited to 'crates/shirabe/src/command')
-rw-r--r--crates/shirabe/src/command/about_command.rs1
-rw-r--r--crates/shirabe/src/command/archive_command.rs9
-rw-r--r--crates/shirabe/src/command/audit_command.rs6
-rw-r--r--crates/shirabe/src/command/base_command.rs30
-rw-r--r--crates/shirabe/src/command/base_dependency_command.rs3
-rw-r--r--crates/shirabe/src/command/bump_command.rs3
-rw-r--r--crates/shirabe/src/command/check_platform_reqs_command.rs3
-rw-r--r--crates/shirabe/src/command/clear_cache_command.rs1
-rw-r--r--crates/shirabe/src/command/create_project_command.rs6
-rw-r--r--crates/shirabe/src/command/diagnose_command.rs4
-rw-r--r--crates/shirabe/src/command/dump_autoload_command.rs3
-rw-r--r--crates/shirabe/src/command/exec_command.rs5
-rw-r--r--crates/shirabe/src/command/fund_command.rs1
-rw-r--r--crates/shirabe/src/command/home_command.rs1
-rw-r--r--crates/shirabe/src/command/init_command.rs6
-rw-r--r--crates/shirabe/src/command/install_command.rs3
-rw-r--r--crates/shirabe/src/command/licenses_command.rs3
-rw-r--r--crates/shirabe/src/command/mod.rs2
-rw-r--r--crates/shirabe/src/command/package_discovery_trait.rs15
-rw-r--r--crates/shirabe/src/command/reinstall_command.rs1
-rw-r--r--crates/shirabe/src/command/remove_command.rs7
-rw-r--r--crates/shirabe/src/command/require_command.rs10
-rw-r--r--crates/shirabe/src/command/run_script_command.rs1
-rw-r--r--crates/shirabe/src/command/script_alias_command.rs1
-rw-r--r--crates/shirabe/src/command/search_command.rs1
-rw-r--r--crates/shirabe/src/command/self_update_command.rs1
-rw-r--r--crates/shirabe/src/command/show_command.rs26
-rw-r--r--crates/shirabe/src/command/status_command.rs3
-rw-r--r--crates/shirabe/src/command/suggests_command.rs3
-rw-r--r--crates/shirabe/src/command/update_command.rs6
-rw-r--r--crates/shirabe/src/command/validate_command.rs3
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()