1
0
Fork 0

Output error if the disk is full, fixes #1952

pull/2015/merge
Jordi Boggiano 2013-06-18 14:02:12 +02:00
parent 55927f983a
commit 3057949a2e
2 changed files with 37 additions and 0 deletions

View File

@ -81,6 +81,9 @@ EOT
}
}
$output->write('Checking disk free space: ');
$this->outputResult($output, $this->checkDiskSpace($config));
$output->write('Checking composer version: ');
$this->outputResult($output, $this->checkVersion());
@ -213,6 +216,18 @@ EOT
}
}
private function checkDiskSpace($config)
{
$minSpaceFree = 1024*1024;
if ((($df = disk_free_space($dir = $config->get('home'))) !== false && $df < $minSpaceFree)
|| (($df = disk_free_space($dir = $config->get('vendor-dir'))) !== false && $df < $minSpaceFree)
) {
return '<error>The disk hosting '.$dir.' is full, this may be the cause of the following exception</error>';
}
return true;
}
private function checkVersion()
{
$protocol = extension_loaded('openssl') ? 'https' : 'http';

View File

@ -141,6 +141,28 @@ class Application extends BaseApplication
return $workingDir;
}
/**
* {@inheritDoc}
*/
public function renderException($e, $output)
{
try {
$composer = $this->getComposer(false);
if ($composer) {
$config = $composer->getConfig();
$minSpaceFree = 1024*1024;
if ((($df = disk_free_space($dir = $config->get('home'))) !== false && $df < $minSpaceFree)
|| (($df = disk_free_space($dir = $config->get('vendor-dir'))) !== false && $df < $minSpaceFree)
) {
$output->writeln('<error>The disk hosting '.$dir.' is full, this may be the cause of the following exception</error>');
}
}
} catch (\Exception $e) {}
return parent::renderException($e, $output);
}
/**
* @param bool $required
* @throws JsonValidationException