Sfoglia il codice sorgente

Improving bin-compat configuration

Kocsis Máté 10 anni fa
parent
commit
08c4732d1e
2 ha cambiato i file con 15 aggiunte e 3 eliminazioni
  1. 12 0
      src/Composer/Config.php
  2. 3 3
      src/Composer/Installer/LibraryInstaller.php

+ 12 - 0
src/Composer/Config.php

@@ -29,6 +29,7 @@ class Config
         'github-protocols' => array('git', 'https', 'ssh'),
         'vendor-dir' => 'vendor',
         'bin-dir' => '{$vendor-dir}/bin',
+        'bin-compat' => 'auto',
         'cache-dir' => '{$home}/cache',
         'cache-files-dir' => '{$cache-dir}/files',
         'cache-repo-dir' => '{$cache-dir}/repo',
@@ -215,6 +216,17 @@ class Config
             case 'home':
                 return rtrim($this->process($this->config[$key], $flags), '/\\');
 
+            case 'bin-compat':
+                $value= $this->getComposerEnv('COMPOSER_BIN_COMPAT') ?: $this->config[$key];
+
+                if (!in_array($value, array('auto', 'nosymlink', 'full'))) {
+                    throw new \RuntimeException(
+                        "Invalid value for 'bin-compat': {$value}. Expected auto, nosymlink, full"
+                    );
+                }
+
+                return $value;
+
             case 'discard-changes':
                 if ($env = $this->getComposerEnv('COMPOSER_DISCARD_CHANGES')) {
                     if (!in_array($env, array('stash', 'true', 'false', '1', '0'), true)) {

+ 3 - 3
src/Composer/Installer/LibraryInstaller.php

@@ -54,7 +54,7 @@ class LibraryInstaller implements InstallerInterface
         $this->filesystem = $filesystem ?: new Filesystem();
         $this->vendorDir = rtrim($composer->getConfig()->get('vendor-dir'), '/');
         $this->binDir = rtrim($composer->getConfig()->get('bin-dir'), '/');
-        $this->binCompat = trim(getenv("COMPOSER_BIN_COMPAT")) ?: 'auto';
+        $this->binCompat = $composer->getConfig()->get('bin-compat');
     }
 
     /**
@@ -227,9 +227,9 @@ class LibraryInstaller implements InstallerInterface
                 } else {
                     $this->installSymlinkBinaries($binPath, $link);
                 }
-            } elseif($this->binCompat === "nosymlink") {
+            } elseif ($this->binCompat === "nosymlink") {
                 $this->installUnixyProxyBinaries($binPath, $link);
-            } elseif($this->binCompat === "full") {
+            } elseif ($this->binCompat === "full") {
                 $this->installFullBinaries($binPath, $link, $bin, $package);
             }
             @chmod($link, 0777 & ~umask());