Make sure the directory is empty even if weird inputs are given, fixes #1683

main
Jordi Boggiano 11 years ago
parent c13d6301f9
commit 57fe33d0f3

@ -29,7 +29,7 @@ class ProjectInstaller implements InstallerInterface
public function __construct($installPath, DownloadManager $dm) public function __construct($installPath, DownloadManager $dm)
{ {
$this->installPath = $installPath; $this->installPath = rtrim(strtr($installPath, '\\', '/'), '/').'/';
$this->downloadManager = $dm; $this->downloadManager = $dm;
} }
@ -58,14 +58,11 @@ class ProjectInstaller implements InstallerInterface
public function install(InstalledRepositoryInterface $repo, PackageInterface $package) public function install(InstalledRepositoryInterface $repo, PackageInterface $package)
{ {
$installPath = $this->installPath; $installPath = $this->installPath;
if (file_exists($installPath) && (count(glob($installPath.'/*')) || count(glob($installPath.'/.*')) > 2)) { if (file_exists($installPath) && (count(glob($installPath.'*')) || (count(glob($installPath.'.*')) > 2))) {
throw new \InvalidArgumentException("Project directory $installPath already exists."); throw new \InvalidArgumentException("Project directory $installPath is not empty.");
}
if (!file_exists(dirname($installPath))) {
throw new \InvalidArgumentException("Project root " . dirname($installPath) . " does not exist.");
} }
if (!is_dir($installPath)) { if (!is_dir($installPath)) {
mkdir($installPath, 0777); mkdir($installPath, 0777, true);
} }
$this->downloadManager->download($package, $installPath); $this->downloadManager->download($package, $installPath);
} }

Loading…
Cancel
Save