diff options
Diffstat (limited to 'crates/shirabe-external-packages/src/symfony/console/command/help_command.rs')
| -rw-r--r-- | crates/shirabe-external-packages/src/symfony/console/command/help_command.rs | 173 |
1 files changed, 0 insertions, 173 deletions
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 deleted file mode 100644 index d7a88422..00000000 --- a/crates/shirabe-external-packages/src/symfony/console/command/help_command.rs +++ /dev/null @@ -1,173 +0,0 @@ -//! ref: composer/vendor/symfony/console/Command/HelpCommand.php - -use crate::symfony::console::command::command::{Command, CommandData, SetDefinitionArg}; -use crate::symfony::console::completion::completion_input::CompletionInput; -use crate::symfony::console::completion::completion_suggestions::{ - CompletionSuggestions, StringOrSuggestion, -}; -use crate::symfony::console::descriptor::application_description::ApplicationDescription; -use crate::symfony::console::descriptor::descriptor_interface::DescribableObject; -use crate::symfony::console::helper::descriptor_helper::DescriptorHelper; -use crate::symfony::console::input::input_argument::InputArgument; -use crate::symfony::console::input::input_definition::DefinitionItem; -use crate::symfony::console::input::input_interface::InputInterface; -use crate::symfony::console::input::input_option::InputOption; -use crate::symfony::console::output::output_interface::OutputInterface; -use shirabe_php_shim::{PhpMixed, impl_php_class}; -use std::ops::{Deref, DerefMut}; - -/// HelpCommand displays the help for a given command. -#[derive(Debug)] -pub struct HelpCommand { - inner: CommandData, - command: std::cell::RefCell<Option<std::rc::Rc<std::cell::RefCell<dyn Command>>>>, -} - -impl_php_class!( - HelpCommand, - r"Symfony\Component\Console\Command\HelpCommand" -); - -impl Deref for HelpCommand { - type Target = CommandData; - - fn deref(&self) -> &Self::Target { - &self.inner - } -} - -impl DerefMut for HelpCommand { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.inner - } -} - -impl Default for HelpCommand { - fn default() -> Self { - Self::new() - } -} - -impl HelpCommand { - pub fn new() -> Self { - let command = HelpCommand { - inner: CommandData::new(None), - command: std::cell::RefCell::new(None), - }; - command - .configure() - .expect("HelpCommand::configure uses static, valid metadata"); - command - } - - pub fn set_command(&self, command: std::rc::Rc<std::cell::RefCell<dyn Command>>) { - *self.command.borrow_mut() = Some(command); - } - - pub fn complete_impl(&self, input: &CompletionInput, suggestions: &mut CompletionSuggestions) { - if input.must_suggest_argument_values_for("command_name") { - let application = self.get_application().unwrap(); - let mut descriptor = ApplicationDescription::new(application, None, false); - suggestions.suggest_values( - descriptor - .get_commands() - .keys() - .cloned() - .map(StringOrSuggestion::String) - .collect(), - ); - - return; - } - - if input.must_suggest_option_values_for("format") { - let helper = DescriptorHelper::new(); - suggestions.suggest_values( - helper - .get_formats() - .into_iter() - .map(StringOrSuggestion::String) - .collect(), - ); - } - } -} - -impl Command for HelpCommand { - fn configure(&self) -> anyhow::Result<()> { - self.inner.ignore_validation_errors(); - - self.inner.set_name("help")?; - self.inner.set_definition(SetDefinitionArg::Array(vec![ - DefinitionItem::InputArgument(InputArgument::new( - "command_name".to_string(), - Some(InputArgument::OPTIONAL), - "The command name".to_string(), - PhpMixed::from("help".to_string()), - )?), - DefinitionItem::InputOption(InputOption::new( - "format", - PhpMixed::Null, - Some(InputOption::VALUE_REQUIRED), - "The output format (txt, xml, json, or md)".to_string(), - PhpMixed::from("txt".to_string()), - )?), - DefinitionItem::InputOption(InputOption::new( - "raw", - PhpMixed::Null, - Some(InputOption::VALUE_NONE), - "To output raw command help".to_string(), - PhpMixed::Null, - )?), - ])); - self.inner.set_description("Display help for a command"); - self.inner.set_help( - "The <info>%command.name%</info> command displays help for a given command:\n\ - \n\ - \x20\x20<info>%command.full_name% list</info>\n\ - \n\ - You can also output the help in other formats by using the <comment>--format</comment> option:\n\ - \n\ - \x20\x20<info>%command.full_name% --format=xml list</info>\n\ - \n\ - To display the list of available commands, please use the <info>list</info> command.", - ); - - Ok(()) - } - - fn execute( - &self, - input: std::rc::Rc<std::cell::RefCell<dyn InputInterface>>, - output: std::rc::Rc<std::cell::RefCell<dyn OutputInterface>>, - ) -> anyhow::Result<i64> { - if self.command.borrow().is_none() { - let application = self.get_application().unwrap(); - let command_name = input.borrow().get_argument("command_name")?.to_string(); - let found = application.borrow_mut().find(&command_name)?; - *self.command.borrow_mut() = Some(found); - } - - let mut helper = DescriptorHelper::new(); - let object = DescribableObject::Command(self.command.borrow().clone().unwrap()); - let mut options = indexmap::IndexMap::new(); - options.insert("format".to_string(), input.borrow().get_option("format")?); - options.insert("raw_text".to_string(), input.borrow().get_option("raw")?); - helper.describe2(output.clone(), object, options)?; - - *self.command.borrow_mut() = None; - - Ok(0) - } - - fn complete( - &self, - input: &CompletionInput, - suggestions: &mut CompletionSuggestions, - ) -> anyhow::Result<()> { - self.complete_impl(input, suggestions); - Ok(()) - } - - crate::delegate_command_trait_impls_to_inner!(inner); -} |
