mirror of
https://github.com/nextcloud/server.git
synced 2026-04-23 07:08:34 -04:00
Give hints on correct migration versioning
Signed-off-by: Joas Schilling <coding@schilljs.com>
This commit is contained in:
parent
1958c1a1ee
commit
7ee982005a
1 changed files with 32 additions and 0 deletions
|
|
@ -28,6 +28,7 @@ use OC\DB\Connection;
|
|||
use OC\DB\MigrationService;
|
||||
use OC\Migration\ConsoleOutput;
|
||||
use OCP\App\IAppManager;
|
||||
use OCP\Util;
|
||||
use Stecman\Component\Symfony\Console\BashCompletion\Completion\CompletionAwareInterface;
|
||||
use Stecman\Component\Symfony\Console\BashCompletion\CompletionContext;
|
||||
use Symfony\Component\Console\Command\Command;
|
||||
|
|
@ -35,6 +36,7 @@ use Symfony\Component\Console\Exception\RuntimeException;
|
|||
use Symfony\Component\Console\Input\InputArgument;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
use Symfony\Component\Console\Question\ConfirmationQuestion;
|
||||
|
||||
class GenerateCommand extends Command implements CompletionAwareInterface {
|
||||
protected static $_templateSimple =
|
||||
|
|
@ -140,6 +142,36 @@ class {{classname}} extends SimpleMigrationStep {
|
|||
return 1;
|
||||
}
|
||||
|
||||
if ($appName === 'core') {
|
||||
$fullVersion = implode('.', Util::getVersion());
|
||||
} else {
|
||||
try {
|
||||
$fullVersion = $this->appManager->getAppVersion($appName, false);
|
||||
} catch (\Throwable $e) {
|
||||
$fullVersion = '';
|
||||
}
|
||||
}
|
||||
|
||||
if ($fullVersion) {
|
||||
[$major, $minor] = explode('.', $fullVersion);
|
||||
$shouldVersion = $major * 1000 + $minor;
|
||||
if ($version !== $shouldVersion) {
|
||||
$output->writeln('<comment>Unexpected migration version for current version: ' . $fullVersion . '</comment>');
|
||||
$output->writeln('<comment> - Pattern: XYYY </comment>');
|
||||
$output->writeln('<comment> - Expected: ' . $shouldVersion . '</comment>');
|
||||
$output->writeln('<comment> - Actual: ' . $version . '</comment>');
|
||||
|
||||
if ($input->isInteractive()) {
|
||||
$helper = $this->getHelper('question');
|
||||
$question = new ConfirmationQuestion('Continue with your given version? (y/n) [n] ', false);
|
||||
|
||||
if (!$helper->ask($input, $output, $question)) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$ms = new MigrationService($appName, $this->connection, new ConsoleOutput($output));
|
||||
|
||||
$date = date('YmdHis');
|
||||
|
|
|
|||
Loading…
Reference in a new issue