diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-06-16 21:59:35 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-06-19 22:17:11 +0900 |
| commit | fd733a87364b877d5e66b4973bd61b5379ec4d61 (patch) | |
| tree | 64bd6c37ca1c33581a851eba22e4261bf5b62b49 /crates/shirabe/src/console/input | |
| parent | 7f3171b14a89762b2f0c71969d7243f2297af7c9 (diff) | |
| download | php-shirabe-fd733a87364b877d5e66b4973bd61b5379ec4d61.tar.gz php-shirabe-fd733a87364b877d5e66b4973bd61b5379ec4d61.tar.zst php-shirabe-fd733a87364b877d5e66b4973bd61b5379ec4d61.zip | |
feat(command): implement Symfony Command
Diffstat (limited to 'crates/shirabe/src/console/input')
| -rw-r--r-- | crates/shirabe/src/console/input/input_argument.rs | 6 | ||||
| -rw-r--r-- | crates/shirabe/src/console/input/input_option.rs | 6 | ||||
| -rw-r--r-- | crates/shirabe/src/console/input/mod.rs | 15 |
3 files changed, 27 insertions, 0 deletions
diff --git a/crates/shirabe/src/console/input/input_argument.rs b/crates/shirabe/src/console/input/input_argument.rs index 81f38ac..53576dd 100644 --- a/crates/shirabe/src/console/input/input_argument.rs +++ b/crates/shirabe/src/console/input/input_argument.rs @@ -29,4 +29,10 @@ impl InputArgument { )?; Ok(Self { inner }) } + + /// Unwraps to the underlying Symfony `InputArgument` (used when forwarding a Composer-typed + /// definition to the Symfony command state). + pub(crate) fn to_base(&self) -> BaseInputArgument { + self.inner.clone() + } } diff --git a/crates/shirabe/src/console/input/input_option.rs b/crates/shirabe/src/console/input/input_option.rs index 3298be0..c7b2af5 100644 --- a/crates/shirabe/src/console/input/input_option.rs +++ b/crates/shirabe/src/console/input/input_option.rs @@ -30,4 +30,10 @@ impl InputOption { BaseInputOption::new(name, shortcut, mode, description.to_string(), default_mixed)?; Ok(Self { inner }) } + + /// Unwraps to the underlying Symfony `InputOption` (used when forwarding a Composer-typed + /// definition to the Symfony command state). + pub(crate) fn to_base(&self) -> BaseInputOption { + self.inner.clone() + } } diff --git a/crates/shirabe/src/console/input/mod.rs b/crates/shirabe/src/console/input/mod.rs index 093d2f4..9141f0c 100644 --- a/crates/shirabe/src/console/input/mod.rs +++ b/crates/shirabe/src/console/input/mod.rs @@ -9,6 +9,21 @@ pub enum InputDefinitionItem { Option(input_option::InputOption), } +impl InputDefinitionItem { + /// Converts to the Symfony-typed definition item accepted by `CommandData::set_definition`. + pub(crate) fn to_definition_item( + &self, + ) -> shirabe_external_packages::symfony::console::input::input_definition::DefinitionItem { + use shirabe_external_packages::symfony::console::input::input_definition::DefinitionItem; + match self { + InputDefinitionItem::Argument(argument) => { + DefinitionItem::InputArgument(argument.to_base()) + } + InputDefinitionItem::Option(option) => DefinitionItem::InputOption(option.to_base()), + } + } +} + impl From<input_argument::InputArgument> for InputDefinitionItem { fn from(value: input_argument::InputArgument) -> Self { Self::Argument(value) |
