annotate modules/contrib/migrate_upgrade/migrate_upgrade.drush.inc @ 7:848c88cfe644

More layout
author Chris Cannam
date Fri, 05 Jan 2018 13:59:44 +0000
parents 4c8ae668cc8c
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 /**
Chris@0 4 * @file
Chris@0 5 * Command-line tools to aid performing and developing upgrade migrations.
Chris@0 6 */
Chris@0 7
Chris@0 8 use Drupal\migrate_upgrade\MigrateUpgradeDrushRunner;
Chris@0 9
Chris@0 10 /**
Chris@0 11 * Implements hook_drush_command().
Chris@0 12 */
Chris@0 13 function migrate_upgrade_drush_command() {
Chris@0 14 $items['migrate-upgrade'] = [
Chris@0 15 'description' => 'Perform one or more upgrade processes.',
Chris@0 16 'options' => [
Chris@0 17 'legacy-db-url' => 'A Drupal 6 style database URL. Required.',
Chris@0 18 'legacy-db-prefix' => 'Prefix of the legacy Drupal installation.',
Chris@0 19 'legacy-root' => 'Site address or root of the legacy Drupal installation',
Chris@0 20 'configure-only' => 'Set up the appropriate upgrade processes but do not perform them',
Chris@0 21 'migration-prefix' => 'With configure-only, a prefix to apply to generated migration ids. Defaults to \'upgrade_\'',
Chris@0 22 ],
Chris@0 23 'examples' => [
Chris@0 24 'migrate-upgrade --legacy-db-url=\'mysql://root:pass@127.0.0.1/d6\'' => 'Upgrade a Drupal 6 database to Drupal 8',
Chris@0 25 'migrate-upgrade --legacy-db-url=\'mysql://root:pass@127.0.0.1/d7\' --configure-only --migration-prefix=d7_custom_' => 'Generate migrations for a custom migration from Drupal 7 to Drupal 8',
Chris@0 26 ],
Chris@0 27 'drupal dependencies' => ['migrate_upgrade'],
Chris@0 28 ];
Chris@0 29 $items['migrate-upgrade-rollback'] = [
Chris@0 30 'description' => 'Rolls back and removes upgrade migrations.',
Chris@0 31 'examples' => [
Chris@0 32 'migrate-upgrade-rollback' => 'Rolls back a previously-run upgrade',
Chris@0 33 ],
Chris@0 34 'drupal dependencies' => ['migrate_upgrade'],
Chris@0 35 ];
Chris@0 36
Chris@0 37 return $items;
Chris@0 38 }
Chris@0 39
Chris@0 40 /**
Chris@0 41 * Execute the upgrade command, configuring the necessary migrations and
Chris@0 42 * optionally perform the imports.
Chris@0 43 */
Chris@0 44 function drush_migrate_upgrade() {
Chris@0 45 $runner = new MigrateUpgradeDrushRunner();
Chris@0 46
Chris@0 47 try {
Chris@0 48 $runner->configure();
Chris@0 49 if (drush_get_option('configure-only')) {
Chris@0 50 $runner->export();
Chris@0 51 }
Chris@0 52 else {
Chris@0 53 $runner->import();
Chris@0 54 \Drupal::state()->set('migrate_drupal_ui.performed', REQUEST_TIME);
Chris@0 55 }
Chris@0 56 // Remove the global database state.
Chris@0 57 \Drupal::state()->delete('migrate.fallback_state_key');
Chris@0 58 }
Chris@0 59 catch (\Exception $e) {
Chris@0 60 drush_log($e->getMessage(), 'error');
Chris@0 61 }
Chris@0 62 }
Chris@0 63
Chris@0 64 /**
Chris@0 65 * Rolls back any upgrade migrations that are present, and deletes the migrations
Chris@0 66 * themselves.
Chris@0 67 */
Chris@0 68 function drush_migrate_upgrade_rollback() {
Chris@0 69 if ($date_performed = \Drupal::state()->get('migrate_drupal_ui.performed')) {
Chris@0 70 if (drush_confirm(dt('All migrations tagged as \'Drupal\' will be rolled back. Are you sure?'))) {
Chris@0 71 $runner = new MigrateUpgradeDrushRunner();
Chris@0 72
Chris@0 73 try {
Chris@0 74 drush_log(dt('Rolling back the upgrades performed @date',
Chris@0 75 ['@date' => \Drupal::service('date.formatter')->format($date_performed)]));
Chris@0 76 $runner->rollback();
Chris@0 77 \Drupal::state()->delete('migrate_drupal_ui.performed');
Chris@0 78 drush_log(dt('Rolled back upgrades'));
Chris@0 79 }
Chris@0 80 catch (\Exception $e) {
Chris@0 81 drush_log($e->getMessage(), 'error');
Chris@0 82 }
Chris@0 83 }
Chris@0 84 else {
Chris@0 85 drush_user_abort();
Chris@0 86 }
Chris@0 87 }
Chris@0 88 else {
Chris@0 89 drush_log(dt('No upgrade operation has been performed.'), 'warning');
Chris@0 90 }
Chris@0 91 }