From 9d2897b850bc5b33a269805005a2c809633862bb Mon Sep 17 00:00:00 2001 From: Sebastian Muszynski Date: Mon, 27 Jan 2025 17:22:40 +0100 Subject: [PATCH] Introduce COMPOSER_WITH_DEPENDENCIES and COMPOSER_WITH_ALL_DEPENDENCIES env var --- doc/03-cli.md | 22 ++++++++++++++++------ src/Composer/Command/BaseCommand.php | 2 ++ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/doc/03-cli.md b/doc/03-cli.md index 99afcd5da..9f88ebc9e 100644 --- a/doc/03-cli.md +++ b/doc/03-cli.md @@ -205,8 +205,8 @@ php composer.phar update vendor/package:2.0.1 vendor/package2:3.0.* * **--no-autoloader:** Skips autoloader generation. * **--no-progress:** Removes the progress display that can mess with some terminals or scripts which don't handle backspace characters. -* **--with-dependencies (-w):** Update also dependencies of packages in the argument list, except those which are root requirements. -* **--with-all-dependencies (-W):** Update also dependencies of packages in the argument list, including those which are root requirements. +* **--with-dependencies (-w):** Update also dependencies of packages in the argument list, except those which are root requirements. Can also be set via the COMPOSER_WITH_DEPENDENCIES=1 env var. +* **--with-all-dependencies (-W):** Update also dependencies of packages in the argument list, including those which are root requirements. Can also be set via the COMPOSER_WITH_ALL_DEPENDENCIES=1 env var. * **--optimize-autoloader (-o):** Convert PSR-0/4 autoloading to classmap to get a faster autoloader. This is recommended especially for production, but can take a bit of time to run, so it is currently not done by default. @@ -289,8 +289,8 @@ If you do not want to install the new dependencies immediately you can call it w * **--no-audit:** Does not run the audit steps after updating the composer.lock file. Also see [COMPOSER_NO_AUDIT](#composer-no-audit). * **--audit-format:** Audit output format. Must be "table", "plain", "json", or "summary" (default). * **--update-no-dev:** Run the dependency update with the `--no-dev` option. Also see [COMPOSER_NO_DEV](#composer-no-dev). -* **--update-with-dependencies (-w):** Also update dependencies of the newly required packages, except those that are root requirements. -* **--update-with-all-dependencies (-W):** Also update dependencies of the newly required packages, including those that are root requirements. +* **--update-with-dependencies (-w):** Also update dependencies of the newly required packages, except those that are root requirements. Can also be set via the COMPOSER_WITH_DEPENDENCIES=1 env var. +* **--update-with-all-dependencies (-W):** Also update dependencies of the newly required packages, including those that are root requirements. Can also be set via the COMPOSER_WITH_ALL_DEPENDENCIES=1 env var. * **--ignore-platform-reqs:** ignore all platform requirements (`php`, `hhvm`, `lib-*` and `ext-*`) and force the installation even if the local machine does not fulfill these. @@ -339,10 +339,10 @@ uninstalled. * **--no-audit:** Does not run the audit steps after installation is complete. Also see [COMPOSER_NO_AUDIT](#composer-no-audit). * **--audit-format:** Audit output format. Must be "table", "plain", "json", or "summary" (default). * **--update-no-dev:** Run the dependency update with the --no-dev option. Also see [COMPOSER_NO_DEV](#composer-no-dev). -* **--update-with-dependencies (-w):** Also update dependencies of the removed packages. +* **--update-with-dependencies (-w):** Also update dependencies of the removed packages. Can also be set via the COMPOSER_WITH_DEPENDENCIES=1 env var. (Deprecated, is now default behavior) * **--update-with-all-dependencies (-W):** Allows all inherited dependencies to be updated, - including those that are root requirements. + including those that are root requirements. Can also be set via the COMPOSER_WITH_ALL_DEPENDENCIES=1 env var. * **--minimal-changes (-m):** During an update with `-w`/`-W`, only perform absolutely necessary changes to transitive dependencies. Can also be set via the COMPOSER_MINIMAL_CHANGES=1 env var. * **--ignore-platform-reqs:** ignore all platform requirements (`php`, `hhvm`, @@ -1325,4 +1325,14 @@ Otherwise, specifying a comma separated list in `COMPOSER_IGNORE_PLATFORM_REQ` w For example, if a development workstation will never run database queries, this can be used to ignore the requirement for the database extensions to be available. If you set `COMPOSER_IGNORE_PLATFORM_REQ=ext-oci8`, then composer will allow packages to be installed even if the `oci8` PHP extension is not enabled. +### COMPOSER_WITH_DEPENDENCIES + +If set to `1`, it is the equivalent of passing the `--with-dependencies` option to +`update`, `require` or `remove`. + +### COMPOSER_WITH_ALL_DEPENDENCIES + +If set to `1`, it is the equivalent of passing the `--with-all-dependencies` option to +`update`, `require` or `remove`. + ← [Libraries](02-libraries.md) | [Schema](04-schema.md) → diff --git a/src/Composer/Command/BaseCommand.php b/src/Composer/Command/BaseCommand.php index bdfbb0d05..85c99f74b 100644 --- a/src/Composer/Command/BaseCommand.php +++ b/src/Composer/Command/BaseCommand.php @@ -258,6 +258,8 @@ abstract class BaseCommand extends Command 'COMPOSER_PREFER_STABLE' => ['prefer-stable'], 'COMPOSER_PREFER_LOWEST' => ['prefer-lowest'], 'COMPOSER_MINIMAL_CHANGES' => ['minimal-changes'], + 'COMPOSER_WITH_DEPENDENCIES' => ['with-dependencies'], + 'COMPOSER_WITH_ALL_DEPENDENCIES' => ['with-all-dependencies'], ]; foreach ($envOptions as $envName => $optionNames) { foreach ($optionNames as $optionName) {