public static function initDirectories($buildName = null)
{
$dirs = array();
$dirs[] = self::getRoot();
$dirs[] = self::getHome();
$dirs[] = self::getVariantsDir();
$dirs[] = self::getBuildDir();
$dirs[] = self::getCacheDir();
$dirs[] = self::getDistFileDir();
$dirs[] = self::getRegistryDir();
if ($buildName) {
$dirs[] = self::getCurrentBuildDir($buildName);
$dirs[] = self::getCurrentBuildDir($buildName) . DIRECTORY_SEPARATOR . 'ext';
$dirs[] = self::getInstallPrefix($buildName) . DIRECTORY_SEPARATOR . 'var' . DIRECTORY_SEPARATOR . 'db';
}
foreach ($dirs as $dir) {
if (!file_exists($dir)) {
mkdir($dir, 0755, true);
}
}
$write = array();
$write[] = self::getHome();
$write[] = self::getVariantsDir();
$write[] = self::getBuildDir();
$write[] = self::getCacheDir();
$write[] = self::getDistFileDir();
$write[] = self::getRegistryDir();
foreach ($write as $dir) {
if (!is_writable($dir)) {
throw new Exception("{$dir} is not writable, please fix the folder permissions.");
}
}
}