Force all glob results to be realpath'd.
parent
effacc1185
commit
443858dae7
|
@ -213,6 +213,7 @@ EOT
|
||||||
|
|
||||||
protected function getOldInstallationFiles($rollbackDir)
|
protected function getOldInstallationFiles($rollbackDir)
|
||||||
{
|
{
|
||||||
return glob($rollbackDir . '/*' . self::OLD_INSTALL_EXT) ?: array();
|
$fs = new Filesystem;
|
||||||
|
return $fs->realpathGlob($rollbackDir . '/*' . self::OLD_INSTALL_EXT) ?: array();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -132,7 +132,7 @@ abstract class ArchiveDownloader extends FileDownloader
|
||||||
*/
|
*/
|
||||||
private function listFiles($dir)
|
private function listFiles($dir)
|
||||||
{
|
{
|
||||||
$files = array_merge(glob($dir . '/.*') ?: array(), glob($dir . '/*') ?: array());
|
$files = array_merge($this->filesystem->realpathGlob($dir . '/.*') ?: array(), $this->filesystem->realpathGlob($dir . '/*') ?: array());
|
||||||
|
|
||||||
return array_values(array_filter($files, function ($el) {
|
return array_values(array_filter($files, function ($el) {
|
||||||
return basename($el) !== '.' && basename($el) !== '..';
|
return basename($el) !== '.' && basename($el) !== '..';
|
||||||
|
|
|
@ -20,6 +20,7 @@ use Composer\Repository\RepositoryManager;
|
||||||
use Composer\Repository\RepositoryInterface;
|
use Composer\Repository\RepositoryInterface;
|
||||||
use Composer\Util\ProcessExecutor;
|
use Composer\Util\ProcessExecutor;
|
||||||
use Composer\Util\RemoteFilesystem;
|
use Composer\Util\RemoteFilesystem;
|
||||||
|
use Composer\Util\Filesystem;
|
||||||
use Symfony\Component\Console\Formatter\OutputFormatterStyle;
|
use Symfony\Component\Console\Formatter\OutputFormatterStyle;
|
||||||
use Composer\EventDispatcher\EventDispatcher;
|
use Composer\EventDispatcher\EventDispatcher;
|
||||||
use Composer\Autoload\AutoloadGenerator;
|
use Composer\Autoload\AutoloadGenerator;
|
||||||
|
@ -132,6 +133,7 @@ class Factory
|
||||||
'cache-vcs-dir' => array('/cache.git' => '/*', '/cache.hg' => '/*'),
|
'cache-vcs-dir' => array('/cache.git' => '/*', '/cache.hg' => '/*'),
|
||||||
'cache-files-dir' => array('/cache.files' => '/*'),
|
'cache-files-dir' => array('/cache.files' => '/*'),
|
||||||
);
|
);
|
||||||
|
$fs = new Filesystem;
|
||||||
foreach ($legacyPaths as $key => $oldPaths) {
|
foreach ($legacyPaths as $key => $oldPaths) {
|
||||||
foreach ($oldPaths as $oldPath => $match) {
|
foreach ($oldPaths as $oldPath => $match) {
|
||||||
$dir = $config->get($key);
|
$dir = $config->get($key);
|
||||||
|
@ -146,7 +148,7 @@ class Factory
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (is_array($children = glob($oldPathMatch))) {
|
if (is_array($children = $fs->realpathGlob($oldPathMatch))) {
|
||||||
foreach ($children as $child) {
|
foreach ($children as $child) {
|
||||||
@rename($child, $dir.'/'.basename($child));
|
@rename($child, $dir.'/'.basename($child));
|
||||||
}
|
}
|
||||||
|
|
|
@ -126,7 +126,7 @@ class LibraryInstaller implements InstallerInterface
|
||||||
$downloadPath = $this->getPackageBasePath($package);
|
$downloadPath = $this->getPackageBasePath($package);
|
||||||
if (strpos($package->getName(), '/')) {
|
if (strpos($package->getName(), '/')) {
|
||||||
$packageVendorDir = dirname($downloadPath);
|
$packageVendorDir = dirname($downloadPath);
|
||||||
if (is_dir($packageVendorDir) && !glob($packageVendorDir.'/*')) {
|
if (is_dir($packageVendorDir) && !$this->filesystem->realpathGlob($packageVendorDir.'/*')) {
|
||||||
@rmdir($packageVendorDir);
|
@rmdir($packageVendorDir);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,6 +41,23 @@ class Filesystem
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Force the results of a glob to be realpaths.
|
||||||
|
*
|
||||||
|
* @param string $pattern
|
||||||
|
* @param int $flags
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function realpathGlob($pattern, $flags = 0)
|
||||||
|
{
|
||||||
|
$matches = glob($pattern, $flags);
|
||||||
|
if (!$matches) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
var_dump($matches);
|
||||||
|
return array_map('realpath', $matches);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks if a directory is empty
|
* Checks if a directory is empty
|
||||||
*
|
*
|
||||||
|
@ -51,7 +68,7 @@ class Filesystem
|
||||||
{
|
{
|
||||||
$dir = rtrim($dir, '/\\');
|
$dir = rtrim($dir, '/\\');
|
||||||
|
|
||||||
return count(glob($dir.'/*') ?: array()) === 0 && count(glob($dir.'/.*') ?: array()) === 2;
|
return count($this->realpathGlob($dir.'/*') ?: array()) === 0 && count($this->realpathGlob($dir.'/.*') ?: array()) === 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue