aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/console/input.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/shirabe/src/console/input.rs')
-rw-r--r--crates/shirabe/src/console/input.rs37
1 files changed, 37 insertions, 0 deletions
diff --git a/crates/shirabe/src/console/input.rs b/crates/shirabe/src/console/input.rs
new file mode 100644
index 0000000..9141f0c
--- /dev/null
+++ b/crates/shirabe/src/console/input.rs
@@ -0,0 +1,37 @@
+pub mod input_argument;
+pub mod input_option;
+
+pub use input_argument::*;
+pub use input_option::*;
+
+pub enum InputDefinitionItem {
+ Argument(input_argument::InputArgument),
+ 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)
+ }
+}
+
+impl From<input_option::InputOption> for InputDefinitionItem {
+ fn from(value: input_option::InputOption) -> Self {
+ Self::Option(value)
+ }
+}