comparison modules/contrib/migrate_upgrade/migrate_upgrade.drush.inc @ 0:c75dbcec494b

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