private function setFilePermissions()
{
$packages = $this->composer->getRepositoryManager()->getLocalRepository()->getPackages();
$message = 'Check "chmod" section in composer.json of %s package.';
foreach ($packages as $package) {
$extra = $package->getExtra();
if (!isset($extra['chmod']) || !is_array($extra['chmod'])) {
continue;
}
$error = false;
foreach ($extra['chmod'] as $chmod) {
if (!isset($chmod['mask']) || !isset($chmod['path']) || strpos($chmod['path'], '..') !== false) {
$error = true;
continue;
}
$file = $this->installer->getTargetDir() . '/' . $chmod['path'];
if (file_exists($file)) {
chmod($file, octdec($chmod['mask']));
} else {
$this->io->writeError(['File doesn\'t exist: ' . $chmod['path'], sprintf($message, $package->getName())]);
}
}
if ($error) {
$this->io->writeError(['Incorrect mask or file path.', sprintf($message, $package->getName())]);
}
}
}