aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe-external-packages/src/symfony/console/output/output_interface.rs
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-08-02 11:04:17 +0900
committernsfisis <nsfisis@gmail.com>2026-08-02 11:04:17 +0900
commit2592062434eeb5fe814dbca953d5fd23458bc135 (patch)
tree050fc0b685ca80cd54a1e3ddb2965a3bef2cc593 /crates/shirabe-external-packages/src/symfony/console/output/output_interface.rs
parentc241931303448f9449051ea2080c1b65561066f2 (diff)
downloadphp-shirabe-2592062434eeb5fe814dbca953d5fd23458bc135.tar.gz
php-shirabe-2592062434eeb5fe814dbca953d5fd23458bc135.tar.zst
php-shirabe-2592062434eeb5fe814dbca953d5fd23458bc135.zip
feat(symfony-console): implement the shell completion command plumbing
The _complete and completion commands were registered but always panicked: get_class_of_command / instantiate_completion_output / tail_debug_log were todo!() and the completion.bash resource was not shipped. - make Command::complete return anyhow::Result so completion errors propagate to CompleteCommand's catch-all (exit code 2) like PHP - add Command::get_class as the port hook for PHP's get_class() debug log; every command supplies its PHP FQCN via the delegation macro - embed Resources/completion.bash at compile time (single-binary port); get_supported_shells becomes a static list - implement tail_debug_log by moving the shared output handle into the 'static process callback - add OutputInterface::as_console_output so unsupported-shell errors go to stderr as in PHP - fix CompletionInput::bind to keep the argument name PHP assigns in the foreach head even when the loop breaks on the first unset argument; application-level completion always hit this and returned no suggestions Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe-external-packages/src/symfony/console/output/output_interface.rs')
-rw-r--r--crates/shirabe-external-packages/src/symfony/console/output/output_interface.rs10
1 files changed, 10 insertions, 0 deletions
diff --git a/crates/shirabe-external-packages/src/symfony/console/output/output_interface.rs b/crates/shirabe-external-packages/src/symfony/console/output/output_interface.rs
index 43810f13..28ebd85c 100644
--- a/crates/shirabe-external-packages/src/symfony/console/output/output_interface.rs
+++ b/crates/shirabe-external-packages/src/symfony/console/output/output_interface.rs
@@ -53,4 +53,14 @@ pub trait OutputInterface: std::fmt::Debug + shirabe_php_shim::AsAny {
/// Returns current output formatter instance.
fn get_formatter(&self) -> std::rc::Rc<std::cell::RefCell<dyn OutputFormatterInterface>>;
+
+ /// Downcast hook standing in for PHP's `$output instanceof ConsoleOutputInterface`
+ /// (cf. `InputInterface::as_streamable`). Only `ConsoleOutput` returns `Some`.
+ fn as_console_output(
+ &self,
+ ) -> Option<
+ &dyn crate::symfony::console::output::console_output_interface::ConsoleOutputInterface,
+ > {
+ None
+ }
}