diff options
Diffstat (limited to 'crates/shirabe-symfony-console/src/application.rs')
| -rw-r--r-- | crates/shirabe-symfony-console/src/application.rs | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/crates/shirabe-symfony-console/src/application.rs b/crates/shirabe-symfony-console/src/application.rs new file mode 100644 index 00000000..192649ef --- /dev/null +++ b/crates/shirabe-symfony-console/src/application.rs @@ -0,0 +1,42 @@ +//! ref: composer/vendor/symfony/console/Application.php + +use crate::command::command::Command; +use crate::completion::completion_input::CompletionInput; +use crate::completion::completion_suggestions::CompletionSuggestions; +use crate::helper::helper_set::HelperSet; +use crate::input::input_definition::InputDefinition; +use indexmap::IndexMap; + +/// `Symfony\Component\Console\Application` is a concrete class in PHP, but it is ported here as a +/// trait rather than a struct. +/// Refer to shirabe::console::Application for the reason. +pub trait Application: std::fmt::Debug + shirabe_php_shim::AsAny { + fn get_name(&self) -> String; + + fn get_version(&self) -> String; + + fn get_help(&self) -> String; + + fn is_single_command(&self) -> bool; + + fn extract_namespace(&self, name: &str, limit: Option<i64>) -> String; + + fn find_namespace(&mut self, namespace: &str) -> anyhow::Result<String>; + + fn all( + &mut self, + namespace: Option<&str>, + ) -> anyhow::Result<IndexMap<String, std::rc::Rc<std::cell::RefCell<dyn Command>>>>; + + fn find(&mut self, name: &str) -> anyhow::Result<std::rc::Rc<std::cell::RefCell<dyn Command>>>; + + fn get_definition(&mut self) -> std::rc::Rc<std::cell::RefCell<InputDefinition>>; + + fn get_helper_set(&mut self) -> std::rc::Rc<std::cell::RefCell<HelperSet>>; + + fn complete( + &mut self, + input: &CompletionInput, + suggestions: &mut CompletionSuggestions, + ) -> anyhow::Result<()>; +} |
