diff options
Diffstat (limited to 'crates/shirabe/src/command/prohibits_command.rs')
| -rw-r--r-- | crates/shirabe/src/command/prohibits_command.rs | 87 |
1 files changed, 27 insertions, 60 deletions
diff --git a/crates/shirabe/src/command/prohibits_command.rs b/crates/shirabe/src/command/prohibits_command.rs index 6add126..26c17f2 100644 --- a/crates/shirabe/src/command/prohibits_command.rs +++ b/crates/shirabe/src/command/prohibits_command.rs @@ -1,12 +1,7 @@ //! ref: composer/src/Composer/Command/ProhibitsCommand.php -use shirabe_external_packages::symfony::component::console::command::command::Command; -use shirabe_external_packages::symfony::component::console::command::command::CommandBase; - -use crate::command::base_command::BaseCommand; +use crate::command::base_command::{BaseCommand, BaseCommandData, HasBaseCommandData}; use crate::command::base_dependency_command::BaseDependencyCommand; -use crate::command::completion_trait::CompletionTrait; -use crate::composer::Composer; use crate::console::input::input_argument::InputArgument; use crate::console::input::input_option::InputOption; use crate::io::io_interface::IOInterface; @@ -15,62 +10,50 @@ use shirabe_external_packages::symfony::console::output::output_interface::Outpu #[derive(Debug)] pub struct ProhibitsCommand { - inner: CommandBase, - composer: Option<Composer>, - io: Option<Box<dyn IOInterface>>, + base_command_data: BaseCommandData, colors: Vec<String>, } -impl CompletionTrait for ProhibitsCommand { - fn require_composer( - &self, - disable_plugins: Option<bool>, - disable_scripts: Option<bool>, - ) -> Composer { - todo!() - } -} - impl ProhibitsCommand { pub fn configure(&mut self) { - let package_suggestions = self.suggest_available_package(); - self.inner - .set_name("prohibits") - .set_aliases(vec!["why-not".to_string()]) + // TODO(cli-completion): suggest_available_package() for `package` argument + self.set_name("prohibits") + .set_aliases(&["why-not".to_string()]) .set_description("Shows which packages prevent the given package from being installed") .set_definition(vec![ InputArgument::new( BaseDependencyCommand::ARGUMENT_PACKAGE, - InputArgument::REQUIRED, + Some(InputArgument::REQUIRED), "Package to inspect", None, - package_suggestions, ), InputArgument::new( BaseDependencyCommand::ARGUMENT_CONSTRAINT, - InputArgument::REQUIRED, + Some(InputArgument::REQUIRED), "Version constraint, which version you expected to be installed", None, - None, ), InputOption::new( BaseDependencyCommand::OPTION_RECURSIVE, - Some("r"), - InputOption::VALUE_NONE, + Some(shirabe_php_shim::PhpMixed::String("r".to_string())), + Some(InputOption::VALUE_NONE), "Recursively resolves up to the root package", + None, ), InputOption::new( BaseDependencyCommand::OPTION_TREE, - Some("t"), - InputOption::VALUE_NONE, + Some(shirabe_php_shim::PhpMixed::String("t".to_string())), + Some(InputOption::VALUE_NONE), "Prints the results as a nested tree", + None, ), InputOption::new( "locked", None, - InputOption::VALUE_NONE, + Some(InputOption::VALUE_NONE), "Read dependency information from composer.lock", + None, ), ]) .set_help( @@ -81,33 +64,9 @@ impl ProhibitsCommand { } pub fn execute(&self, input: &dyn InputInterface, output: &dyn OutputInterface) -> i64 { - self.inner.do_execute(input, output, true) - } -} - -impl BaseCommand for ProhibitsCommand { - fn inner(&self) -> &CommandBase { - &self.inner - } - - fn inner_mut(&mut self) -> &mut CommandBase { - &mut self.inner - } - - fn composer(&self) -> Option<&Composer> { - self.composer.as_ref() - } - - fn composer_mut(&mut self) -> &mut Option<Composer> { - &mut self.composer - } - - fn io(&self) -> Option<&dyn IOInterface> { - self.io.as_deref() - } - - fn io_mut(&mut self) -> &mut Option<Box<dyn IOInterface>> { - &mut self.io + // TODO(phase-b): wire `do_execute` from BaseDependencyCommand trait + let _ = (input, output); + todo!() } } @@ -121,4 +80,12 @@ impl BaseDependencyCommand for ProhibitsCommand { } } -impl Command for ProhibitsCommand {} +impl HasBaseCommandData for ProhibitsCommand { + fn base_command_data(&self) -> &BaseCommandData { + &self.base_command_data + } + + fn base_command_data_mut(&mut self) -> &mut BaseCommandData { + &mut self.base_command_data + } +} |
