From e87d37a294a4c754585309d391d793a2c9a1287e Mon Sep 17 00:00:00 2001 From: nsfisis Date: Wed, 24 Jun 2026 04:16:08 +0900 Subject: feat(console): implement application description for `list` Replace the todo!() in TextDescriptor::describe_application with a real option-only InputDefinition built via InputDefinition::from_options, which shares InputOption behind Rc instead of reconstructing by value. Drop the now-unused Command::clone_box and switch the descriptors to borrow the shared commands directly. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../src/symfony/console/descriptor/text_descriptor.rs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'crates/shirabe-external-packages/src/symfony/console/descriptor/text_descriptor.rs') diff --git a/crates/shirabe-external-packages/src/symfony/console/descriptor/text_descriptor.rs b/crates/shirabe-external-packages/src/symfony/console/descriptor/text_descriptor.rs index b0c0090..afb7ca8 100644 --- a/crates/shirabe-external-packages/src/symfony/console/descriptor/text_descriptor.rs +++ b/crates/shirabe-external-packages/src/symfony/console/descriptor/text_descriptor.rs @@ -308,11 +308,14 @@ impl TextDescriptor { self.write_text("Usage:\n", &options); self.write_text(" command [options] [arguments]\n\n", &options); - // PHP: new InputDefinition($application->getDefinition()->getOptions()). - // `InputOption` is not Clone and lives behind `Rc`, so the option-only - // definition cannot be reconstructed by value yet. - let definition: InputDefinition = - todo!("new InputDefinition($application->getDefinition()->getOptions())"); + let app_definition = application.borrow_mut().get_definition(); + let options_only: Vec> = app_definition + .borrow() + .get_options() + .values() + .cloned() + .collect(); + let definition = InputDefinition::from_options(options_only)?; self.describe_input_definition(&definition, options.clone())?; self.write_text("\n", &IndexMap::new()); -- cgit v1.3.1