X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=vendor%2Fdrupal%2Fconsole%2Fsrc%2FCommand%2FDatabase%2FRestoreCommand.php;fp=vendor%2Fdrupal%2Fconsole%2Fsrc%2FCommand%2FDatabase%2FRestoreCommand.php;h=d94b336d95f67977d3009827b0453e3d82b417f8;hp=0000000000000000000000000000000000000000;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad diff --git a/vendor/drupal/console/src/Command/Database/RestoreCommand.php b/vendor/drupal/console/src/Command/Database/RestoreCommand.php new file mode 100644 index 000000000..d94b336d9 --- /dev/null +++ b/vendor/drupal/console/src/Command/Database/RestoreCommand.php @@ -0,0 +1,130 @@ +appRoot = $appRoot; + parent::__construct(); + } + + /** + * {@inheritdoc} + */ + protected function configure() + { + $this + ->setName('database:restore') + ->setDescription($this->trans('commands.database.restore.description')) + ->addArgument( + 'database', + InputArgument::OPTIONAL, + $this->trans('commands.database.restore.arguments.database'), + 'default' + ) + ->addOption( + 'file', + null, + InputOption::VALUE_REQUIRED, + $this->trans('commands.database.restore.options.file') + ) + ->setHelp($this->trans('commands.database.restore.help')); + } + + /** + * {@inheritdoc} + */ + protected function execute(InputInterface $input, OutputInterface $output) + { + $io = new DrupalStyle($input, $output); + + $database = $input->getArgument('database'); + $file = $input->getOption('file'); + $learning = $input->getOption('learning'); + + $databaseConnection = $this->resolveConnection($io, $database); + + if (!$file) { + $io->error( + $this->trans('commands.database.restore.messages.no-file') + ); + return 1; + } + if ($databaseConnection['driver'] == 'mysql') { + $command = sprintf( + 'mysql --user=%s --password=%s --host=%s --port=%s %s < %s', + $databaseConnection['username'], + $databaseConnection['password'], + $databaseConnection['host'], + $databaseConnection['port'], + $databaseConnection['database'], + $file + ); + } elseif ($databaseConnection['driver'] == 'pgsql') { + $command = sprintf( + 'PGPASSWORD="%s" psql -w -U %s -h %s -p %s -d %s -f %s', + $databaseConnection['password'], + $databaseConnection['username'], + $databaseConnection['host'], + $databaseConnection['port'], + $databaseConnection['database'], + $file + ); + } + + if ($learning) { + $io->commentBlock($command); + } + + $processBuilder = new ProcessBuilder(['-v']); + $process = $processBuilder->getProcess(); + $process->setWorkingDirectory($this->appRoot); + $process->setTty('true'); + $process->setCommandLine($command); + $process->run(); + + if (!$process->isSuccessful()) { + throw new \RuntimeException($process->getErrorOutput()); + } + + $io->success( + sprintf( + '%s %s', + $this->trans('commands.database.restore.messages.success'), + $file + ) + ); + + return 0; + } +}