Merge pull request #5628 from nextcloud/only-create-the-migration-dir-when-necessary

Only create the migration directory when necessary
This commit is contained in:
Morris Jobke 2017-07-07 14:10:32 +02:00 committed by GitHub
commit e76b867c2c
3 changed files with 22 additions and 10 deletions

View File

@ -136,6 +136,8 @@ class <classname> extends SimpleMigrationStep {
];
$code = str_replace($placeHolders, $replacements, self::$_templateSimple);
$dir = $ms->getMigrationsDirectory();
$this->ensureMigrationDirExists($dir);
$path = $dir . '/' . $className . '.php';
if (file_put_contents($path, $code) === false) {
@ -145,4 +147,19 @@ class <classname> extends SimpleMigrationStep {
return $path;
}
private function ensureMigrationDirExists($directory) {
if (file_exists($directory) && is_dir($directory)) {
return;
}
if (file_exists($directory)) {
throw new \RuntimeException("Could not create folder \"$directory\"");
}
$this->ensureMigrationDirExists(dirname($directory));
if (!@mkdir($directory) && !is_dir($directory)) {
throw new \RuntimeException("Could not create folder \"$directory\"");
}
}
}

View File

@ -25,7 +25,6 @@
namespace OC\DB;
use Doctrine\DBAL\Schema\Schema;
use OC\IntegrityCheck\Helpers\AppLocator;
use OC\Migration\SimpleOutput;
use OCP\AppFramework\App;
@ -78,14 +77,6 @@ class MigrationService {
$namespace = App::buildAppNamespace($appName);
$this->migrationsPath = "$appPath/lib/Migration";
$this->migrationsNamespace = $namespace . '\\Migration';
if (!@mkdir($appPath . '/lib') && !is_dir($appPath . '/lib')) {
throw new \RuntimeException("Could not create migration folder \"{$this->migrationsPath}\"");
}
}
if (!@mkdir($this->migrationsPath) && !is_dir($this->migrationsPath)) {
throw new \RuntimeException("Could not create migration folder \"{$this->migrationsPath}\"");
}
}
@ -164,6 +155,10 @@ class MigrationService {
protected function findMigrations() {
$directory = realpath($this->migrationsPath);
if (!file_exists($directory) || !is_dir($directory)) {
return [];
}
$iterator = new \RegexIterator(
new \RecursiveIteratorIterator(
new \RecursiveDirectoryIterator($directory, \FilesystemIterator::SKIP_DOTS),

View File

@ -131,6 +131,7 @@ class Installer {
// check for required dependencies
\OC_App::checkAppDependencies($this->config, $l, $info);
\OC_App::registerAutoloading($appId, $basedir);
//install the database
if(is_file($basedir.'/appinfo/database.xml')) {
@ -144,7 +145,6 @@ class Installer {
$ms->migrate();
}
\OC_App::registerAutoloading($appId, $basedir);
\OC_App::setupBackgroundJobs($info['background-jobs']);
if(isset($info['settings']) && is_array($info['settings'])) {
\OC::$server->getSettingsManager()->setupSettings($info['settings']);