Improving bin-compat configuration
parent
6a776c5edf
commit
08c4732d1e
|
@ -29,6 +29,7 @@ class Config
|
||||||
'github-protocols' => array('git', 'https', 'ssh'),
|
'github-protocols' => array('git', 'https', 'ssh'),
|
||||||
'vendor-dir' => 'vendor',
|
'vendor-dir' => 'vendor',
|
||||||
'bin-dir' => '{$vendor-dir}/bin',
|
'bin-dir' => '{$vendor-dir}/bin',
|
||||||
|
'bin-compat' => 'auto',
|
||||||
'cache-dir' => '{$home}/cache',
|
'cache-dir' => '{$home}/cache',
|
||||||
'cache-files-dir' => '{$cache-dir}/files',
|
'cache-files-dir' => '{$cache-dir}/files',
|
||||||
'cache-repo-dir' => '{$cache-dir}/repo',
|
'cache-repo-dir' => '{$cache-dir}/repo',
|
||||||
|
@ -215,6 +216,17 @@ class Config
|
||||||
case 'home':
|
case 'home':
|
||||||
return rtrim($this->process($this->config[$key], $flags), '/\\');
|
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':
|
case 'discard-changes':
|
||||||
if ($env = $this->getComposerEnv('COMPOSER_DISCARD_CHANGES')) {
|
if ($env = $this->getComposerEnv('COMPOSER_DISCARD_CHANGES')) {
|
||||||
if (!in_array($env, array('stash', 'true', 'false', '1', '0'), true)) {
|
if (!in_array($env, array('stash', 'true', 'false', '1', '0'), true)) {
|
||||||
|
|
|
@ -54,7 +54,7 @@ class LibraryInstaller implements InstallerInterface
|
||||||
$this->filesystem = $filesystem ?: new Filesystem();
|
$this->filesystem = $filesystem ?: new Filesystem();
|
||||||
$this->vendorDir = rtrim($composer->getConfig()->get('vendor-dir'), '/');
|
$this->vendorDir = rtrim($composer->getConfig()->get('vendor-dir'), '/');
|
||||||
$this->binDir = rtrim($composer->getConfig()->get('bin-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 {
|
} else {
|
||||||
$this->installSymlinkBinaries($binPath, $link);
|
$this->installSymlinkBinaries($binPath, $link);
|
||||||
}
|
}
|
||||||
} elseif($this->binCompat === "nosymlink") {
|
} elseif ($this->binCompat === "nosymlink") {
|
||||||
$this->installUnixyProxyBinaries($binPath, $link);
|
$this->installUnixyProxyBinaries($binPath, $link);
|
||||||
} elseif($this->binCompat === "full") {
|
} elseif ($this->binCompat === "full") {
|
||||||
$this->installFullBinaries($binPath, $link, $bin, $package);
|
$this->installFullBinaries($binPath, $link, $bin, $package);
|
||||||
}
|
}
|
||||||
@chmod($link, 0777 & ~umask());
|
@chmod($link, 0777 & ~umask());
|
||||||
|
|
Loading…
Reference in New Issue