diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-06-08 02:23:31 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-06-08 02:23:31 +0900 |
| commit | 06368584a9277022d9cfc42d22c37f4cc6e580f8 (patch) | |
| tree | a210e77273316ce94530391ea4e6dc4ee60b42ea /crates/shirabe-external-packages/src/symfony/console | |
| parent | 318ea948f5932dfa7942081a269d62fd7161a9bf (diff) | |
| download | php-shirabe-06368584a9277022d9cfc42d22c37f4cc6e580f8.tar.gz php-shirabe-06368584a9277022d9cfc42d22c37f4cc6e580f8.tar.zst php-shirabe-06368584a9277022d9cfc42d22c37f4cc6e580f8.zip | |
refactor(external-packages): drop component segment from symfony paths
Align the Symfony namespace mapping with the documented convention
(symfony::component::X -> symfony::X) and remove now-unused console
stub files. Update all import paths across the workspace.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe-external-packages/src/symfony/console')
31 files changed, 516 insertions, 33 deletions
diff --git a/crates/shirabe-external-packages/src/symfony/console/application.rs b/crates/shirabe-external-packages/src/symfony/console/application.rs new file mode 100644 index 0000000..f937473 --- /dev/null +++ b/crates/shirabe-external-packages/src/symfony/console/application.rs @@ -0,0 +1,108 @@ +use crate::symfony::console::input::InputInterface; +use crate::symfony::console::output::OutputInterface; +use shirabe_php_shim::PhpMixed; + +#[derive(Debug)] +pub struct Application; + +impl Application { + pub fn new(_name: &str, _version: &str) -> Self { + todo!() + } + + pub fn run( + &mut self, + _input: Option<std::rc::Rc<std::cell::RefCell<dyn InputInterface>>>, + _output: Option<std::rc::Rc<std::cell::RefCell<dyn OutputInterface>>>, + ) -> anyhow::Result<i64> { + todo!() + } + + pub fn set_name(&mut self, _name: &str) { + todo!() + } + + pub fn get_name(&self) -> String { + todo!() + } + + pub fn set_version(&mut self, _version: &str) { + todo!() + } + + pub fn get_version(&self) -> String { + todo!() + } + + pub fn add(&mut self, _command: PhpMixed) -> Option<PhpMixed> { + todo!() + } + + pub fn get(&self, _name: &str) -> anyhow::Result<PhpMixed> { + todo!() + } + + pub fn set_auto_exit(&mut self, _auto_exit: bool) { + todo!() + } + + pub fn set_catch_exceptions(&mut self, _catch_exceptions: bool) { + todo!() + } + + pub fn get_helper_set(&self) -> PhpMixed { + todo!() + } + + pub fn set_helper_set(&mut self, _helper_set: PhpMixed) { + todo!() + } + + pub fn get_definition(&self) -> PhpMixed { + todo!() + } + + pub fn get_long_version(&self) -> String { + todo!() + } + + pub fn find(&self, _name: &str) -> anyhow::Result<PhpMixed> { + todo!() + } + + pub fn all(&self, _namespace: Option<&str>) -> Vec<PhpMixed> { + todo!() + } + + pub fn get_namespaces(&self) -> Vec<String> { + todo!() + } + + pub fn set_default_command( + &mut self, + _command_name: &str, + _is_single_command: bool, + ) -> &mut Self { + todo!() + } + + pub fn is_single_command(&self) -> bool { + todo!() + } + + pub fn render_throwable( + &self, + _exception: &anyhow::Error, + _output: std::rc::Rc<std::cell::RefCell<dyn OutputInterface>>, + ) { + todo!() + } + + pub fn set_catch_errors(&mut self, _catch_errors: bool) { + todo!() + } + + pub fn has(&self, _name: &str) -> bool { + todo!() + } +} diff --git a/crates/shirabe-external-packages/src/symfony/console/command/command.rs b/crates/shirabe-external-packages/src/symfony/console/command/command.rs new file mode 100644 index 0000000..32965cf --- /dev/null +++ b/crates/shirabe-external-packages/src/symfony/console/command/command.rs @@ -0,0 +1,18 @@ +/// Stub for \Symfony\Component\Console\Command\Command. +pub trait Command { + fn get_name(&self) -> Option<String> { + todo!() + } + + fn set_name(&mut self, _name: &str) { + todo!() + } + + fn get_description(&self) -> String { + todo!() + } + + fn set_description(&mut self, _description: &str) { + todo!() + } +} diff --git a/crates/shirabe-external-packages/src/symfony/console/command/mod.rs b/crates/shirabe-external-packages/src/symfony/console/command/mod.rs new file mode 100644 index 0000000..375170c --- /dev/null +++ b/crates/shirabe-external-packages/src/symfony/console/command/mod.rs @@ -0,0 +1,3 @@ +pub mod command; + +pub use command::*; diff --git a/crates/shirabe-external-packages/src/symfony/console/exception/command_not_found_exception.rs b/crates/shirabe-external-packages/src/symfony/console/exception/command_not_found_exception.rs new file mode 100644 index 0000000..f1ed60b --- /dev/null +++ b/crates/shirabe-external-packages/src/symfony/console/exception/command_not_found_exception.rs @@ -0,0 +1,13 @@ +#[derive(Debug)] +pub struct CommandNotFoundException { + pub message: String, + pub code: i64, +} + +impl std::fmt::Display for CommandNotFoundException { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "{}", self.message) + } +} + +impl std::error::Error for CommandNotFoundException {} diff --git a/crates/shirabe-external-packages/src/symfony/console/exception/exception_interface.rs b/crates/shirabe-external-packages/src/symfony/console/exception/exception_interface.rs new file mode 100644 index 0000000..3c42009 --- /dev/null +++ b/crates/shirabe-external-packages/src/symfony/console/exception/exception_interface.rs @@ -0,0 +1 @@ +pub trait ExceptionInterface: std::error::Error {} diff --git a/crates/shirabe-external-packages/src/symfony/console/exception/mod.rs b/crates/shirabe-external-packages/src/symfony/console/exception/mod.rs index e76b8d9..25750a1 100644 --- a/crates/shirabe-external-packages/src/symfony/console/exception/mod.rs +++ b/crates/shirabe-external-packages/src/symfony/console/exception/mod.rs @@ -1,3 +1,7 @@ +pub mod command_not_found_exception; +pub mod exception_interface; pub mod invalid_argument_exception; +pub use command_not_found_exception::*; +pub use exception_interface::*; pub use invalid_argument_exception::*; diff --git a/crates/shirabe-external-packages/src/symfony/console/formatter/output_formatter.rs b/crates/shirabe-external-packages/src/symfony/console/formatter/output_formatter.rs index 77ebde5..4b499b8 100644 --- a/crates/shirabe-external-packages/src/symfony/console/formatter/output_formatter.rs +++ b/crates/shirabe-external-packages/src/symfony/console/formatter/output_formatter.rs @@ -1,12 +1,13 @@ -use indexmap::IndexMap; - #[derive(Debug)] pub struct OutputFormatter; impl OutputFormatter { pub fn new( _decorated: bool, - _styles: IndexMap<String, crate::symfony::console::formatter::OutputFormatterStyle>, + _styles: indexmap::IndexMap< + String, + crate::symfony::console::formatter::OutputFormatterStyle, + >, ) -> Self { todo!() } @@ -27,6 +28,10 @@ impl OutputFormatter { todo!() } + pub fn escape_trailing_backslash(_text: &str) -> String { + todo!() + } + pub fn set_style( &mut self, _name: &str, diff --git a/crates/shirabe-external-packages/src/symfony/console/helper/formatter_helper.rs b/crates/shirabe-external-packages/src/symfony/console/helper/formatter_helper.rs new file mode 100644 index 0000000..656828e --- /dev/null +++ b/crates/shirabe-external-packages/src/symfony/console/helper/formatter_helper.rs @@ -0,0 +1,12 @@ +#[derive(Debug)] +pub struct FormatterHelper; + +impl FormatterHelper { + pub fn format_section(&self, _section: &str, _message: &str, _style: &str) -> String { + todo!() + } + + pub fn format_block(&self, _messages: &[&str], _style: &str, _large: bool) -> String { + todo!() + } +} diff --git a/crates/shirabe-external-packages/src/symfony/console/helper/helper.rs b/crates/shirabe-external-packages/src/symfony/console/helper/helper.rs new file mode 100644 index 0000000..881aabd --- /dev/null +++ b/crates/shirabe-external-packages/src/symfony/console/helper/helper.rs @@ -0,0 +1,3 @@ +pub trait Helper { + fn get_name(&self) -> String; +} diff --git a/crates/shirabe-external-packages/src/symfony/console/helper/mod.rs b/crates/shirabe-external-packages/src/symfony/console/helper/mod.rs index 5908bd6..b31517a 100644 --- a/crates/shirabe-external-packages/src/symfony/console/helper/mod.rs +++ b/crates/shirabe-external-packages/src/symfony/console/helper/mod.rs @@ -1,7 +1,15 @@ +pub mod formatter_helper; +pub mod helper; pub mod helper_set; +pub mod progress_bar; pub mod question_helper; pub mod table; +pub mod table_separator; +pub use formatter_helper::*; +pub use helper::*; pub use helper_set::*; +pub use progress_bar::*; pub use question_helper::*; pub use table::*; +pub use table_separator::*; diff --git a/crates/shirabe-external-packages/src/symfony/console/helper/progress_bar.rs b/crates/shirabe-external-packages/src/symfony/console/helper/progress_bar.rs new file mode 100644 index 0000000..e2a728f --- /dev/null +++ b/crates/shirabe-external-packages/src/symfony/console/helper/progress_bar.rs @@ -0,0 +1,38 @@ +use crate::symfony::console::output::OutputInterface; + +#[derive(Debug)] +pub struct ProgressBar; + +impl ProgressBar { + pub fn new(_output: std::rc::Rc<std::cell::RefCell<dyn OutputInterface>>, _max: i64) -> Self { + todo!() + } + + pub fn start(&mut self, _max: Option<i64>) { + todo!() + } + + pub fn advance(&mut self, _step: i64) { + todo!() + } + + pub fn finish(&mut self) { + todo!() + } + + pub fn set_format(&mut self, _format: &str) { + todo!() + } + + pub fn get_progress(&self) -> i64 { + todo!() + } + + pub fn get_max_steps(&self) -> i64 { + todo!() + } + + pub fn set_progress(&mut self, _step: i64) { + todo!() + } +} diff --git a/crates/shirabe-external-packages/src/symfony/console/helper/question_helper.rs b/crates/shirabe-external-packages/src/symfony/console/helper/question_helper.rs index c7d55be..70a9572 100644 --- a/crates/shirabe-external-packages/src/symfony/console/helper/question_helper.rs +++ b/crates/shirabe-external-packages/src/symfony/console/helper/question_helper.rs @@ -1,3 +1,6 @@ +use crate::symfony::console::input::InputInterface; +use crate::symfony::console::output::OutputInterface; +use crate::symfony::console::question::Question; use shirabe_php_shim::PhpMixed; #[derive(Debug)] @@ -6,9 +9,9 @@ pub struct QuestionHelper; impl QuestionHelper { pub fn ask( &self, - _input: &mut dyn std::any::Any, - _output: &mut dyn std::any::Any, - _question: &dyn std::any::Any, + _input: std::rc::Rc<std::cell::RefCell<dyn InputInterface>>, + _output: std::rc::Rc<std::cell::RefCell<dyn OutputInterface>>, + _question: &Question, ) -> Option<PhpMixed> { todo!() } diff --git a/crates/shirabe-external-packages/src/symfony/console/helper/table.rs b/crates/shirabe-external-packages/src/symfony/console/helper/table.rs index 30c008c..4ff5a5e 100644 --- a/crates/shirabe-external-packages/src/symfony/console/helper/table.rs +++ b/crates/shirabe-external-packages/src/symfony/console/helper/table.rs @@ -1,4 +1,4 @@ -use crate::symfony::component::console::output::OutputInterface; +use crate::symfony::console::output::OutputInterface; use shirabe_php_shim::PhpMixed; #[derive(Debug)] @@ -9,10 +9,6 @@ impl Table { todo!() } - pub fn set_style(&mut self, _style: &str) -> &mut Self { - todo!() - } - pub fn set_headers(&mut self, _headers: Vec<PhpMixed>) -> &mut Self { todo!() } @@ -28,4 +24,24 @@ impl Table { pub fn render(&mut self) { todo!() } + + pub fn set_style(&mut self, _style: &str) -> &mut Self { + todo!() + } + + pub fn set_column_width(&mut self, _column_index: usize, _width: i64) -> &mut Self { + todo!() + } + + pub fn set_column_widths(&mut self, _widths: Vec<i64>) -> &mut Self { + todo!() + } + + pub fn set_column_max_width(&mut self, _column_index: usize, _width: i64) -> &mut Self { + todo!() + } + + pub fn set_horizontal(&mut self, _horizontal: bool) -> &mut Self { + todo!() + } } diff --git a/crates/shirabe-external-packages/src/symfony/console/helper/table_separator.rs b/crates/shirabe-external-packages/src/symfony/console/helper/table_separator.rs new file mode 100644 index 0000000..22ac013 --- /dev/null +++ b/crates/shirabe-external-packages/src/symfony/console/helper/table_separator.rs @@ -0,0 +1,14 @@ +#[derive(Debug)] +pub struct TableSeparator; + +impl Default for TableSeparator { + fn default() -> Self { + Self::new() + } +} + +impl TableSeparator { + pub fn new() -> Self { + todo!() + } +} diff --git a/crates/shirabe-external-packages/src/symfony/console/input/array_input.rs b/crates/shirabe-external-packages/src/symfony/console/input/array_input.rs index 0304649..0c68cf2 100644 --- a/crates/shirabe-external-packages/src/symfony/console/input/array_input.rs +++ b/crates/shirabe-external-packages/src/symfony/console/input/array_input.rs @@ -1,3 +1,4 @@ +use crate::symfony::console::input::InputDefinition; use crate::symfony::console::input::InputInterface; use indexmap::IndexMap; use shirabe_php_shim::PhpMixed; @@ -6,7 +7,10 @@ use shirabe_php_shim::PhpMixed; pub struct ArrayInput; impl ArrayInput { - pub fn new(_parameters: IndexMap<String, PhpMixed>) -> Self { + pub fn new( + _parameters: IndexMap<String, PhpMixed>, + _definition: Option<InputDefinition>, + ) -> Self { todo!() } } @@ -26,6 +30,9 @@ impl InputInterface for ArrayInput { ) -> PhpMixed { todo!() } + fn bind(&mut self, _definition: &InputDefinition) -> anyhow::Result<()> { + todo!() + } fn validate(&self) -> anyhow::Result<()> { todo!() } diff --git a/crates/shirabe-external-packages/src/symfony/console/input/input_definition.rs b/crates/shirabe-external-packages/src/symfony/console/input/input_definition.rs new file mode 100644 index 0000000..74839fc --- /dev/null +++ b/crates/shirabe-external-packages/src/symfony/console/input/input_definition.rs @@ -0,0 +1,30 @@ +use shirabe_php_shim::PhpMixed; + +#[derive(Debug)] +pub struct InputDefinition; + +impl InputDefinition { + pub fn new(_definition: Vec<PhpMixed>) -> Self { + todo!() + } + + pub fn add_argument(&mut self, _argument: PhpMixed) { + todo!() + } + + pub fn add_option(&mut self, _option: PhpMixed) { + todo!() + } + + pub fn has_option(&self, _name: &str) -> bool { + todo!() + } + + pub fn get_option(&self, _name: &str) -> anyhow::Result<PhpMixed> { + todo!() + } + + pub fn has_argument(&self, _name: &str) -> bool { + todo!() + } +} diff --git a/crates/shirabe-external-packages/src/symfony/console/input/input_interface.rs b/crates/shirabe-external-packages/src/symfony/console/input/input_interface.rs index 5ec5896..14458e4 100644 --- a/crates/shirabe-external-packages/src/symfony/console/input/input_interface.rs +++ b/crates/shirabe-external-packages/src/symfony/console/input/input_interface.rs @@ -1,7 +1,6 @@ -use indexmap::IndexMap; use shirabe_php_shim::PhpMixed; -pub trait InputInterface { +pub trait InputInterface: std::fmt::Debug { fn get_first_argument(&self) -> Option<String>; fn has_parameter_option(&self, values: &[&str], only_params: bool) -> bool; fn get_parameter_option( @@ -10,12 +9,16 @@ pub trait InputInterface { default: PhpMixed, only_params: bool, ) -> PhpMixed; + fn bind( + &mut self, + definition: &crate::symfony::console::input::InputDefinition, + ) -> anyhow::Result<()>; fn validate(&self) -> anyhow::Result<()>; - fn get_arguments(&self) -> IndexMap<String, PhpMixed>; + fn get_arguments(&self) -> indexmap::IndexMap<String, PhpMixed>; fn get_argument(&self, name: &str) -> PhpMixed; fn set_argument(&mut self, name: &str, value: PhpMixed) -> anyhow::Result<()>; fn has_argument(&self, name: &str) -> bool; - fn get_options(&self) -> IndexMap<String, PhpMixed>; + fn get_options(&self) -> indexmap::IndexMap<String, PhpMixed>; fn get_option(&self, name: &str) -> PhpMixed; fn set_option(&mut self, name: &str, value: PhpMixed) -> anyhow::Result<()>; fn has_option(&self, name: &str) -> bool; diff --git a/crates/shirabe-external-packages/src/symfony/console/input/mod.rs b/crates/shirabe-external-packages/src/symfony/console/input/mod.rs index 77a6f66..8c6a28f 100644 --- a/crates/shirabe-external-packages/src/symfony/console/input/mod.rs +++ b/crates/shirabe-external-packages/src/symfony/console/input/mod.rs @@ -1,5 +1,6 @@ pub mod array_input; pub mod input_argument; +pub mod input_definition; pub mod input_interface; pub mod input_option; pub mod streamable_input_interface; @@ -7,6 +8,7 @@ pub mod string_input; pub use array_input::*; pub use input_argument::*; +pub use input_definition::*; pub use input_interface::*; pub use input_option::*; pub use streamable_input_interface::*; diff --git a/crates/shirabe-external-packages/src/symfony/console/input/string_input.rs b/crates/shirabe-external-packages/src/symfony/console/input/string_input.rs index 3d19823..34b2bfc 100644 --- a/crates/shirabe-external-packages/src/symfony/console/input/string_input.rs +++ b/crates/shirabe-external-packages/src/symfony/console/input/string_input.rs @@ -1,3 +1,4 @@ +use crate::symfony::console::input::InputDefinition; use crate::symfony::console::input::InputInterface; use indexmap::IndexMap; use shirabe_php_shim::PhpMixed; @@ -26,6 +27,9 @@ impl InputInterface for StringInput { ) -> PhpMixed { todo!() } + fn bind(&mut self, _definition: &InputDefinition) -> anyhow::Result<()> { + todo!() + } fn validate(&self) -> anyhow::Result<()> { todo!() } diff --git a/crates/shirabe-external-packages/src/symfony/console/mod.rs b/crates/shirabe-external-packages/src/symfony/console/mod.rs index 6812ab6..b5b557d 100644 --- a/crates/shirabe-external-packages/src/symfony/console/mod.rs +++ b/crates/shirabe-external-packages/src/symfony/console/mod.rs @@ -1,3 +1,5 @@ +pub mod application; +pub mod command; pub mod completion; pub mod exception; pub mod formatter; @@ -5,8 +7,12 @@ pub mod helper; pub mod input; pub mod output; pub mod question; +pub mod single_command_application; pub mod style; +pub mod terminal; +pub use application::*; +pub use command::*; pub use completion::*; pub use exception::*; pub use formatter::*; @@ -14,4 +20,6 @@ pub use helper::*; pub use input::*; pub use output::*; pub use question::*; +pub use single_command_application::*; pub use style::*; +pub use terminal::*; diff --git a/crates/shirabe-external-packages/src/symfony/console/output/console_output.rs b/crates/shirabe-external-packages/src/symfony/console/output/console_output.rs new file mode 100644 index 0000000..5aa6ff0 --- /dev/null +++ b/crates/shirabe-external-packages/src/symfony/console/output/console_output.rs @@ -0,0 +1,73 @@ +use crate::symfony::console::formatter::OutputFormatter; +use crate::symfony::console::output::ConsoleOutputInterface; +use crate::symfony::console::output::OutputInterface; + +#[derive(Debug)] +pub struct ConsoleOutput; + +impl ConsoleOutput { + pub fn new( + _verbosity: i64, + _decorated: Option<bool>, + _formatter: Option<OutputFormatter>, + ) -> Self { + todo!() + } +} + +impl ConsoleOutputInterface for ConsoleOutput { + fn get_error_output(&self) -> std::rc::Rc<std::cell::RefCell<dyn OutputInterface>> { + todo!() + } + + fn set_error_output(&mut self, _error: std::rc::Rc<std::cell::RefCell<dyn OutputInterface>>) { + todo!() + } +} + +impl OutputInterface for ConsoleOutput { + fn is_console_output_interface(&self) -> bool { + true + } + + fn as_console_output_interface(&self) -> Option<&dyn ConsoleOutputInterface> { + Some(self) + } + + fn write(&self, _messages: &str, _newline: bool, _type: i64) { + todo!() + } + fn writeln(&self, _messages: &str, _type: i64) { + todo!() + } + fn set_verbosity(&self, _level: i64) { + todo!() + } + fn get_verbosity(&self) -> i64 { + todo!() + } + fn is_quiet(&self) -> bool { + todo!() + } + fn is_verbose(&self) -> bool { + todo!() + } + fn is_very_verbose(&self) -> bool { + todo!() + } + fn is_debug(&self) -> bool { + todo!() + } + fn set_decorated(&self, _decorated: bool) { + todo!() + } + fn is_decorated(&self) -> bool { + todo!() + } + fn set_formatter(&self, _formatter: OutputFormatter) { + todo!() + } + fn get_formatter(&self) -> &OutputFormatter { + todo!() + } +} diff --git a/crates/shirabe-external-packages/src/symfony/console/output/console_output_interface.rs b/crates/shirabe-external-packages/src/symfony/console/output/console_output_interface.rs new file mode 100644 index 0000000..0b5b432 --- /dev/null +++ b/crates/shirabe-external-packages/src/symfony/console/output/console_output_interface.rs @@ -0,0 +1,6 @@ +use crate::symfony::console::output::OutputInterface; + +pub trait ConsoleOutputInterface: OutputInterface { + fn get_error_output(&self) -> std::rc::Rc<std::cell::RefCell<dyn OutputInterface>>; + fn set_error_output(&mut self, error: std::rc::Rc<std::cell::RefCell<dyn OutputInterface>>); +} diff --git a/crates/shirabe-external-packages/src/symfony/console/output/mod.rs b/crates/shirabe-external-packages/src/symfony/console/output/mod.rs index 8f0c7f1..ac2b687 100644 --- a/crates/shirabe-external-packages/src/symfony/console/output/mod.rs +++ b/crates/shirabe-external-packages/src/symfony/console/output/mod.rs @@ -1,5 +1,9 @@ +pub mod console_output; +pub mod console_output_interface; pub mod output_interface; pub mod stream_output; +pub use console_output::*; +pub use console_output_interface::*; pub use output_interface::*; pub use stream_output::*; 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 4d5b7c7..18eadfb 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 @@ -1,24 +1,33 @@ use crate::symfony::console::formatter::OutputFormatter; +use crate::symfony::console::output::ConsoleOutputInterface; -pub trait OutputInterface { - fn write(&mut self, messages: &str, newline: bool, r#type: i64); - fn writeln(&mut self, messages: &str, r#type: i64); - fn set_verbosity(&mut self, level: i64); +pub trait OutputInterface: std::fmt::Debug { + // PHP class semantics: OutputInterface methods take &self with interior mutability, + // because output objects are shared by reference across the PHP code. + fn write(&self, messages: &str, newline: bool, r#type: i64); + fn writeln(&self, messages: &str, r#type: i64); + fn set_verbosity(&self, level: i64); fn get_verbosity(&self) -> i64; fn is_quiet(&self) -> bool; fn is_verbose(&self) -> bool; fn is_very_verbose(&self) -> bool; fn is_debug(&self) -> bool; - fn set_decorated(&mut self, decorated: bool); + fn set_decorated(&self, decorated: bool); fn is_decorated(&self) -> bool; - fn set_formatter(&mut self, formatter: OutputFormatter); - fn get_formatter(&mut self) -> &mut OutputFormatter; + fn set_formatter(&self, formatter: OutputFormatter); + fn get_formatter(&self) -> &OutputFormatter; /// PHP: `$output instanceof ConsoleOutputInterface`. Default false; ConsoleOutput overrides. fn is_console_output_interface(&self) -> bool { false } + /// PHP: `$output instanceof ConsoleOutputInterface`. Returns the output as a + /// ConsoleOutputInterface trait object when it is one. Default None; ConsoleOutput overrides. + fn as_console_output_interface(&self) -> Option<&dyn ConsoleOutputInterface> { + None + } + /// PHP: only StreamOutput exposes `getStream()`. Default panics for outputs without one. fn get_stream(&self) -> shirabe_php_shim::PhpResource { todo!("get_stream not available on this OutputInterface implementation") diff --git a/crates/shirabe-external-packages/src/symfony/console/output/stream_output.rs b/crates/shirabe-external-packages/src/symfony/console/output/stream_output.rs index 654e7f6..6aa79b8 100644 --- a/crates/shirabe-external-packages/src/symfony/console/output/stream_output.rs +++ b/crates/shirabe-external-packages/src/symfony/console/output/stream_output.rs @@ -12,13 +12,13 @@ impl StreamOutput { } impl OutputInterface for StreamOutput { - fn write(&mut self, _messages: &str, _newline: bool, _type: i64) { + fn write(&self, _messages: &str, _newline: bool, _type: i64) { todo!() } - fn writeln(&mut self, _messages: &str, _type: i64) { + fn writeln(&self, _messages: &str, _type: i64) { todo!() } - fn set_verbosity(&mut self, _level: i64) { + fn set_verbosity(&self, _level: i64) { todo!() } fn get_verbosity(&self) -> i64 { @@ -36,16 +36,19 @@ impl OutputInterface for StreamOutput { fn is_debug(&self) -> bool { todo!() } - fn set_decorated(&mut self, _decorated: bool) { + fn set_decorated(&self, _decorated: bool) { todo!() } fn is_decorated(&self) -> bool { todo!() } - fn set_formatter(&mut self, _formatter: OutputFormatter) { + fn set_formatter(&self, _formatter: OutputFormatter) { todo!() } - fn get_formatter(&mut self) -> &mut OutputFormatter { + fn get_formatter(&self) -> &OutputFormatter { + todo!() + } + fn get_stream(&self) -> shirabe_php_shim::PhpResource { todo!() } } diff --git a/crates/shirabe-external-packages/src/symfony/console/question/choice_question.rs b/crates/shirabe-external-packages/src/symfony/console/question/choice_question.rs new file mode 100644 index 0000000..5eb5818 --- /dev/null +++ b/crates/shirabe-external-packages/src/symfony/console/question/choice_question.rs @@ -0,0 +1,19 @@ +use crate::symfony::console::question::Question; +use shirabe_php_shim::PhpMixed; + +#[derive(Debug)] +pub struct ChoiceQuestion(pub Question); + +impl ChoiceQuestion { + pub fn new(_question: &str, _choices: Vec<PhpMixed>, _default: Option<PhpMixed>) -> Self { + todo!() + } + + pub fn set_multiselect(&mut self, _multiselect: bool) { + todo!() + } + + pub fn set_error_message(&mut self, _error_message: &str) { + todo!() + } +} diff --git a/crates/shirabe-external-packages/src/symfony/console/question/mod.rs b/crates/shirabe-external-packages/src/symfony/console/question/mod.rs index 60c3107..67e7e7b 100644 --- a/crates/shirabe-external-packages/src/symfony/console/question/mod.rs +++ b/crates/shirabe-external-packages/src/symfony/console/question/mod.rs @@ -1,3 +1,5 @@ +pub mod choice_question; pub mod question; +pub use choice_question::*; pub use question::*; diff --git a/crates/shirabe-external-packages/src/symfony/console/question/question.rs b/crates/shirabe-external-packages/src/symfony/console/question/question.rs index 02402ce..552f780 100644 --- a/crates/shirabe-external-packages/src/symfony/console/question/question.rs +++ b/crates/shirabe-external-packages/src/symfony/console/question/question.rs @@ -15,11 +15,11 @@ impl Question { todo!() } - pub fn set_normalizer(&mut self, _normalizer: Box<dyn Fn(&PhpMixed) -> PhpMixed>) { + pub fn set_max_attempts(&mut self, _attempts: Option<i64>) { todo!() } - pub fn set_max_attempts(&mut self, _attempts: Option<i64>) { + pub fn set_normalizer(&mut self, _normalizer: Box<dyn Fn(&PhpMixed) -> PhpMixed>) { todo!() } @@ -27,6 +27,10 @@ impl Question { todo!() } + pub fn set_hidden_fallback(&mut self, _fallback: bool) { + todo!() + } + pub fn get_question(&self) -> String { todo!() } @@ -38,4 +42,12 @@ impl Question { pub fn is_hidden(&self) -> bool { todo!() } + + pub fn get_validator(&self) -> Option<&dyn Fn(Option<PhpMixed>) -> anyhow::Result<PhpMixed>> { + todo!() + } + + pub fn get_max_attempts(&self) -> Option<i64> { + todo!() + } } diff --git a/crates/shirabe-external-packages/src/symfony/console/single_command_application.rs b/crates/shirabe-external-packages/src/symfony/console/single_command_application.rs new file mode 100644 index 0000000..9273477 --- /dev/null +++ b/crates/shirabe-external-packages/src/symfony/console/single_command_application.rs @@ -0,0 +1,33 @@ +#[derive(Debug)] +pub struct SingleCommandApplication; + +impl Default for SingleCommandApplication { + fn default() -> Self { + Self::new() + } +} + +impl SingleCommandApplication { + pub fn new() -> Self { + todo!() + } + + pub fn set_name(&mut self, _name: &str) -> &mut Self { + todo!() + } + + pub fn set_version(&mut self, _version: &str) -> &mut Self { + todo!() + } + + pub fn set_code( + &mut self, + _code: Box<dyn Fn(&dyn std::any::Any, &dyn std::any::Any) -> i64>, + ) -> &mut Self { + todo!() + } + + pub fn run(&mut self) -> anyhow::Result<i64> { + todo!() + } +} diff --git a/crates/shirabe-external-packages/src/symfony/console/style/symfony_style.rs b/crates/shirabe-external-packages/src/symfony/console/style/symfony_style.rs index b5dfded..c26ca30 100644 --- a/crates/shirabe-external-packages/src/symfony/console/style/symfony_style.rs +++ b/crates/shirabe-external-packages/src/symfony/console/style/symfony_style.rs @@ -1,5 +1,5 @@ -use crate::symfony::component::console::input::InputInterface; -use crate::symfony::component::console::output::OutputInterface; +use crate::symfony::console::input::InputInterface; +use crate::symfony::console::output::OutputInterface; use shirabe_php_shim::PhpMixed; #[derive(Debug)] diff --git a/crates/shirabe-external-packages/src/symfony/console/terminal.rs b/crates/shirabe-external-packages/src/symfony/console/terminal.rs new file mode 100644 index 0000000..251d71e --- /dev/null +++ b/crates/shirabe-external-packages/src/symfony/console/terminal.rs @@ -0,0 +1,22 @@ +#[derive(Debug)] +pub struct Terminal; + +impl Default for Terminal { + fn default() -> Self { + Self::new() + } +} + +impl Terminal { + pub fn new() -> Self { + todo!() + } + + pub fn get_width(&self) -> i64 { + todo!() + } + + pub fn get_height(&self) -> i64 { + todo!() + } +} |
