diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-06-14 00:15:52 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-06-14 00:15:52 +0900 |
| commit | fe15d4dba4530f574856a6c443a3f665aa5abe7a (patch) | |
| tree | d7dc0433e40a2c38c50daf399ec8a3de5c2ac307 /crates/shirabe-external-packages/src/symfony/console/input/argv_input.rs | |
| parent | e165b2ffa32e21c50787ae7227dc5333131d1414 (diff) | |
| download | php-shirabe-fe15d4dba4530f574856a6c443a3f665aa5abe7a.tar.gz php-shirabe-fe15d4dba4530f574856a6c443a3f665aa5abe7a.tar.zst php-shirabe-fe15d4dba4530f574856a6c443a3f665aa5abe7a.zip | |
feat(console): implement get_command_name_before_binding via input clone
Replace the todo!() stub with the real Symfony logic: clone the input,
bind it against the application definition (ignoring binding errors), and
read the first argument so the command name is detected even when global
options precede it.
Add a dup() method to InputInterface to model PHP's clone, derive Clone on
the input types, and treat InvalidArgument/InvalidOption/MissingInput as
ignorable ExceptionInterface errors during the pre-binding probe.
Diffstat (limited to 'crates/shirabe-external-packages/src/symfony/console/input/argv_input.rs')
| -rw-r--r-- | crates/shirabe-external-packages/src/symfony/console/input/argv_input.rs | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/crates/shirabe-external-packages/src/symfony/console/input/argv_input.rs b/crates/shirabe-external-packages/src/symfony/console/input/argv_input.rs index 765f601..4772cdb 100644 --- a/crates/shirabe-external-packages/src/symfony/console/input/argv_input.rs +++ b/crates/shirabe-external-packages/src/symfony/console/input/argv_input.rs @@ -24,7 +24,7 @@ use shirabe_php_shim::PhpMixed; /// When passing an argument to the constructor, be sure that it respects /// the same rules as the argv one. It's almost always better to use the /// `StringInput` when you want to provide your own input. -#[derive(Debug)] +#[derive(Debug, Clone)] pub struct ArgvInput { pub(crate) inner: Input, tokens: Vec<String>, @@ -543,6 +543,10 @@ impl ArgvInput { } impl InputInterface for ArgvInput { + fn dup(&self) -> std::rc::Rc<std::cell::RefCell<dyn InputInterface>> { + std::rc::Rc::new(std::cell::RefCell::new(self.clone())) + } + fn get_first_argument(&self) -> Option<String> { ArgvInput::get_first_argument(self) } |
