aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/command/prohibits_command.rs
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-05-12 04:09:20 +0900
committernsfisis <nsfisis@gmail.com>2026-05-12 04:09:20 +0900
commit78a34c0ae1622c8a49fad17236c4d152c0153932 (patch)
tree08c4da234f658ee01672cb7d5f966c94387f35b9 /crates/shirabe/src/command/prohibits_command.rs
parent337f3c0b1505aa23e3adec52dc29d4cd27c8eec3 (diff)
downloadphp-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.rs66
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)
+ }
+}