aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe-external-packages/src/symfony/console/command
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-06-13 11:38:20 +0900
committernsfisis <nsfisis@gmail.com>2026-06-13 17:49:15 +0900
commit69c372ba0eca61b05260d6d208445d9e69d14e34 (patch)
treeab837346f5729a5a4a67ccd83462033511b41c89 /crates/shirabe-external-packages/src/symfony/console/command
parentefe5bdb1987411a473d4af15451a376d20928245 (diff)
downloadphp-shirabe-69c372ba0eca61b05260d6d208445d9e69d14e34.tar.gz
php-shirabe-69c372ba0eca61b05260d6d208445d9e69d14e34.tar.zst
php-shirabe-69c372ba0eca61b05260d6d208445d9e69d14e34.zip
fix(console): flatten Application inheritance to restore overrides
Composer\Console\Application embedded Symfony's Application as an `inner` field and delegated to it, so polymorphic calls inside the Symfony base (e.g. doRun -> $this->getLongVersion()) resolved to Symfony's own methods and never reached Composer's overrides. As a result `--version` bypassed Composer's getLongVersion()/doRun() entirely. Flatten the PHP inheritance chain into the single shirabe Application struct: take in the Symfony base methods (parent-calling overrides kept under a `base_` prefix) and drop the `inner` delegation. Replace the Symfony Application struct in shirabe-external-packages with an `Application` trait that the merged struct implements, so commands and descriptors can reference it without a reverse crate dependency. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe-external-packages/src/symfony/console/command')
-rw-r--r--crates/shirabe-external-packages/src/symfony/console/command/command.rs10
-rw-r--r--crates/shirabe-external-packages/src/symfony/console/command/complete_command.rs4
-rw-r--r--crates/shirabe-external-packages/src/symfony/console/command/dump_completion_command.rs4
-rw-r--r--crates/shirabe-external-packages/src/symfony/console/command/help_command.rs4
-rw-r--r--crates/shirabe-external-packages/src/symfony/console/command/lazy_command.rs6
-rw-r--r--crates/shirabe-external-packages/src/symfony/console/command/list_command.rs4
6 files changed, 16 insertions, 16 deletions
diff --git a/crates/shirabe-external-packages/src/symfony/console/command/command.rs b/crates/shirabe-external-packages/src/symfony/console/command/command.rs
index 1af9c59..1640689 100644
--- a/crates/shirabe-external-packages/src/symfony/console/command/command.rs
+++ b/crates/shirabe-external-packages/src/symfony/console/command/command.rs
@@ -20,7 +20,7 @@ use std::rc::Rc;
/// (defined below) and this concrete `BaseCommand` struct holding the base-class
/// state and behavior. Subclasses embed a `BaseCommand` and implement `Command`.
pub struct BaseCommand {
- application: Option<Rc<RefCell<Application>>>,
+ application: Option<Rc<RefCell<dyn Application>>>,
name: Option<String>,
process_title: Option<String>,
aliases: Vec<String>,
@@ -130,7 +130,7 @@ impl BaseCommand {
self.ignore_validation_errors = true;
}
- pub fn set_application(&mut self, application: Option<Rc<RefCell<Application>>>) {
+ pub fn set_application(&mut self, application: Option<Rc<RefCell<dyn Application>>>) {
self.application = application.clone();
if let Some(application) = application {
self.set_helper_set(application.borrow_mut().get_helper_set());
@@ -151,7 +151,7 @@ impl BaseCommand {
}
/// Gets the application instance for this command.
- pub fn get_application(&self) -> Option<Rc<RefCell<Application>>> {
+ pub fn get_application(&self) -> Option<Rc<RefCell<dyn Application>>> {
self.application.clone()
}
@@ -709,11 +709,11 @@ pub trait Command: std::fmt::Debug + shirabe_php_shim::AsAny {
todo!()
}
- fn set_application(&mut self, _application: Option<Rc<RefCell<Application>>>) {
+ fn set_application(&mut self, _application: Option<Rc<RefCell<dyn Application>>>) {
todo!()
}
- fn get_application(&self) -> Option<Rc<RefCell<Application>>> {
+ fn get_application(&self) -> Option<Rc<RefCell<dyn Application>>> {
todo!()
}
diff --git a/crates/shirabe-external-packages/src/symfony/console/command/complete_command.rs b/crates/shirabe-external-packages/src/symfony/console/command/complete_command.rs
index 7a986ec..e8a319e 100644
--- a/crates/shirabe-external-packages/src/symfony/console/command/complete_command.rs
+++ b/crates/shirabe-external-packages/src/symfony/console/command/complete_command.rs
@@ -396,14 +396,14 @@ impl Command for CompleteCommand {
fn set_application(
&mut self,
- application: Option<Rc<RefCell<crate::symfony::console::application::Application>>>,
+ application: Option<Rc<RefCell<dyn crate::symfony::console::application::Application>>>,
) {
self.inner.set_application(application);
}
fn get_application(
&self,
- ) -> Option<Rc<RefCell<crate::symfony::console::application::Application>>> {
+ ) -> Option<Rc<RefCell<dyn crate::symfony::console::application::Application>>> {
self.inner.get_application()
}
diff --git a/crates/shirabe-external-packages/src/symfony/console/command/dump_completion_command.rs b/crates/shirabe-external-packages/src/symfony/console/command/dump_completion_command.rs
index 51287c7..1929c64 100644
--- a/crates/shirabe-external-packages/src/symfony/console/command/dump_completion_command.rs
+++ b/crates/shirabe-external-packages/src/symfony/console/command/dump_completion_command.rs
@@ -230,14 +230,14 @@ impl Command for DumpCompletionCommand {
fn set_application(
&mut self,
- application: Option<Rc<RefCell<crate::symfony::console::application::Application>>>,
+ application: Option<Rc<RefCell<dyn crate::symfony::console::application::Application>>>,
) {
self.inner.set_application(application);
}
fn get_application(
&self,
- ) -> Option<Rc<RefCell<crate::symfony::console::application::Application>>> {
+ ) -> Option<Rc<RefCell<dyn crate::symfony::console::application::Application>>> {
self.inner.get_application()
}
diff --git a/crates/shirabe-external-packages/src/symfony/console/command/help_command.rs b/crates/shirabe-external-packages/src/symfony/console/command/help_command.rs
index 0a26931..ec2de93 100644
--- a/crates/shirabe-external-packages/src/symfony/console/command/help_command.rs
+++ b/crates/shirabe-external-packages/src/symfony/console/command/help_command.rs
@@ -162,14 +162,14 @@ impl Command for HelpCommand {
fn set_application(
&mut self,
- application: Option<Rc<RefCell<crate::symfony::console::application::Application>>>,
+ application: Option<Rc<RefCell<dyn crate::symfony::console::application::Application>>>,
) {
self.inner.set_application(application);
}
fn get_application(
&self,
- ) -> Option<Rc<RefCell<crate::symfony::console::application::Application>>> {
+ ) -> Option<Rc<RefCell<dyn crate::symfony::console::application::Application>>> {
self.inner.get_application()
}
diff --git a/crates/shirabe-external-packages/src/symfony/console/command/lazy_command.rs b/crates/shirabe-external-packages/src/symfony/console/command/lazy_command.rs
index 47f73bf..924d4bd 100644
--- a/crates/shirabe-external-packages/src/symfony/console/command/lazy_command.rs
+++ b/crates/shirabe-external-packages/src/symfony/console/command/lazy_command.rs
@@ -78,7 +78,7 @@ impl LazyCommand {
self.get_command().ignore_validation_errors();
}
- pub fn set_application(&mut self, application: Option<Rc<RefCell<Application>>>) {
+ pub fn set_application(&mut self, application: Option<Rc<RefCell<dyn Application>>>) {
// if ($this->command instanceof parent)
if let LazyCommandInner::Command(command) = &mut self.command {
command.set_application(application.clone());
@@ -288,11 +288,11 @@ impl Command for LazyCommand {
todo!()
}
- fn set_application(&mut self, application: Option<Rc<RefCell<Application>>>) {
+ fn set_application(&mut self, application: Option<Rc<RefCell<dyn Application>>>) {
LazyCommand::set_application(self, application);
}
- fn get_application(&self) -> Option<Rc<RefCell<Application>>> {
+ fn get_application(&self) -> Option<Rc<RefCell<dyn Application>>> {
self.inner.get_application()
}
diff --git a/crates/shirabe-external-packages/src/symfony/console/command/list_command.rs b/crates/shirabe-external-packages/src/symfony/console/command/list_command.rs
index 7581c90..5203be1 100644
--- a/crates/shirabe-external-packages/src/symfony/console/command/list_command.rs
+++ b/crates/shirabe-external-packages/src/symfony/console/command/list_command.rs
@@ -162,14 +162,14 @@ impl Command for ListCommand {
fn set_application(
&mut self,
- application: Option<Rc<RefCell<crate::symfony::console::application::Application>>>,
+ application: Option<Rc<RefCell<dyn crate::symfony::console::application::Application>>>,
) {
self.inner.set_application(application);
}
fn get_application(
&self,
- ) -> Option<Rc<RefCell<crate::symfony::console::application::Application>>> {
+ ) -> Option<Rc<RefCell<dyn crate::symfony::console::application::Application>>> {
self.inner.get_application()
}