Explorar o código

Add COMPOSER_DISABLE_ROOT_WARN env var and skip root warning on self-update command as well, refs #5119

Jordi Boggiano %!s(int64=9) %!d(string=hai) anos
pai
achega
cb8587cdad
Modificáronse 2 ficheiros con 10 adicións e 2 borrados
  1. 6 0
      doc/03-cli.md
  2. 4 2
      src/Composer/Console/Application.php

+ 6 - 0
doc/03-cli.md

@@ -794,4 +794,10 @@ If set to 1, this env var will make Composer behave as if you passed the
 
 If set to 1, this env disables the warning about having xdebug enabled.
 
+### COMPOSER_DISABLE_ROOT_WARN
+
+If set to 1, this env disables the warning about running commands as root. It also
+disables automatic clearing of sudo sessions, so you should really only set this
+if you use Composer as root at all times like in docker containers.
+
 ← [Libraries](02-libraries.md)  |  [Schema](04-schema.md) →

+ 4 - 2
src/Composer/Console/Application.php

@@ -133,9 +133,11 @@ class Application extends BaseApplication
                 $input->setInteractive(false);
             }
 
-            if (!Platform::isWindows() && function_exists('exec')) {
+            if (!Platform::isWindows() && function_exists('exec') && !getenv('COMPOSER_DISABLE_ROOT_WARN')) {
                 if (function_exists('posix_getuid') && posix_getuid() === 0) {
-                    $io->writeError('<warning>Running composer as root is highly discouraged as packages, plugins and scripts cannot always be trusted</warning>');
+                    if ($commandName !== 'self-update' && $commandName !== 'selfupdate') {
+                        $io->writeError('<warning>Running composer as root is highly discouraged as packages, plugins and scripts cannot always be trusted</warning>');
+                    }
                     if ($uid = getenv('SUDO_UID')) {
                         // Silently clobber any sudo credentials on the invoking user to avoid privilege escalations later on
                         // ref. https://github.com/composer/composer/issues/5119