aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/console/input
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-06-16 21:59:35 +0900
committernsfisis <nsfisis@gmail.com>2026-06-19 22:17:11 +0900
commitfd733a87364b877d5e66b4973bd61b5379ec4d61 (patch)
tree64bd6c37ca1c33581a851eba22e4261bf5b62b49 /crates/shirabe/src/console/input
parent7f3171b14a89762b2f0c71969d7243f2297af7c9 (diff)
downloadphp-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.rs6
-rw-r--r--crates/shirabe/src/console/input/input_option.rs6
-rw-r--r--crates/shirabe/src/console/input/mod.rs15
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)