diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-05-12 04:09:20 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-05-12 04:09:20 +0900 |
| commit | 78a34c0ae1622c8a49fad17236c4d152c0153932 (patch) | |
| tree | 08c4da234f658ee01672cb7d5f966c94387f35b9 /crates/shirabe/src/command/prohibits_command.rs | |
| parent | 337f3c0b1505aa23e3adec52dc29d4cd27c8eec3 (diff) | |
| download | php-shirabe-78a34c0ae1622c8a49fad17236c4d152c0153932.tar.gz php-shirabe-78a34c0ae1622c8a49fad17236c4d152c0153932.tar.zst php-shirabe-78a34c0ae1622c8a49fad17236c4d152c0153932.zip | |
feat(port): port ProhibitsCommand.php
Diffstat (limited to 'crates/shirabe/src/command/prohibits_command.rs')
| -rw-r--r-- | crates/shirabe/src/command/prohibits_command.rs | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/crates/shirabe/src/command/prohibits_command.rs b/crates/shirabe/src/command/prohibits_command.rs index 94a4474..216b050 100644 --- a/crates/shirabe/src/command/prohibits_command.rs +++ b/crates/shirabe/src/command/prohibits_command.rs @@ -1 +1,67 @@ //! ref: composer/src/Composer/Command/ProhibitsCommand.php + +use shirabe_external_packages::symfony::console::input::input_interface::InputInterface; +use shirabe_external_packages::symfony::console::output::output_interface::OutputInterface; +use crate::command::base_dependency_command::BaseDependencyCommand; +use crate::command::completion_trait::CompletionTrait; +use crate::console::input::input_argument::InputArgument; +use crate::console::input::input_option::InputOption; + +pub struct ProhibitsCommand { + inner: BaseDependencyCommand, +} + +impl CompletionTrait for ProhibitsCommand {} + +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()]) + .set_description("Shows which packages prevent the given package from being installed") + .set_definition(vec![ + InputArgument::new( + BaseDependencyCommand::ARGUMENT_PACKAGE, + InputArgument::REQUIRED, + "Package to inspect", + None, + package_suggestions, + ), + InputArgument::new( + BaseDependencyCommand::ARGUMENT_CONSTRAINT, + InputArgument::REQUIRED, + "Version constraint, which version you expected to be installed", + None, + None, + ), + InputOption::new( + BaseDependencyCommand::OPTION_RECURSIVE, + Some("r"), + InputOption::VALUE_NONE, + "Recursively resolves up to the root package", + ), + InputOption::new( + BaseDependencyCommand::OPTION_TREE, + Some("t"), + InputOption::VALUE_NONE, + "Prints the results as a nested tree", + ), + InputOption::new( + "locked", + None, + InputOption::VALUE_NONE, + "Read dependency information from composer.lock", + ), + ]) + .set_help( + "Displays detailed information about why a package cannot be installed.\n\n\ + <info>php composer.phar prohibits composer/composer</info>\n\n\ + Read more at https://getcomposer.org/doc/03-cli.md#prohibits-why-not" + ); + } + + pub fn execute(&self, input: &dyn InputInterface, output: &dyn OutputInterface) -> i64 { + self.inner.do_execute(input, output, true) + } +} |
