[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class PhabricatorConfigManagementMigrateWorkflow 4 extends PhabricatorConfigManagementWorkflow { 5 6 protected function didConstruct() { 7 $this 8 ->setName('migrate') 9 ->setExamples('**migrate**') 10 ->setSynopsis(pht( 11 'Migrate file-based configuration to more modern storage.')); 12 } 13 14 public function execute(PhutilArgumentParser $args) { 15 $console = PhutilConsole::getConsole(); 16 $key_count = 0; 17 18 $options = PhabricatorApplicationConfigOptions::loadAllOptions(); 19 $local_config = new PhabricatorConfigLocalSource(); 20 $database_config = new PhabricatorConfigDatabaseSource('default'); 21 $config_sources = PhabricatorEnv::getConfigSourceStack()->getStack(); 22 $console->writeOut( 23 pht('Migrating file-based config to more modern config...')."\n"); 24 foreach ($config_sources as $config_source) { 25 if (!($config_source instanceof PhabricatorConfigFileSource)) { 26 $console->writeOut( 27 pht('Skipping config of source type %s...', 28 get_class($config_source))."\n"); 29 continue; 30 } 31 $console->writeOut(pht('Migrating file source...')."\n"); 32 $all_keys = $config_source->getAllKeys(); 33 foreach ($all_keys as $key => $value) { 34 $option = idx($options, $key); 35 if (!$option) { 36 $console->writeOut(pht('Skipping obsolete option: %s', $key)."\n"); 37 continue; 38 } 39 $in_local = $local_config->getKeys(array($option->getKey())); 40 if ($in_local) { 41 $console->writeOut(pht( 42 'Skipping option "%s"; already in local config.', $key)."\n"); 43 continue; 44 } 45 $is_locked = $option->getLocked(); 46 if ($is_locked) { 47 $local_config->setKeys(array($option->getKey() => $value)); 48 $key_count++; 49 $console->writeOut(pht( 50 'Migrated option "%s" from file to local config.', $key)."\n"); 51 } else { 52 $in_database = $database_config->getKeys(array($option->getKey())); 53 if ($in_database) { 54 $console->writeOut(pht( 55 'Skipping option "%s"; already in database config.', $key)."\n"); 56 continue; 57 } else { 58 PhabricatorConfigEditor::storeNewValue( 59 $this->getViewer(), 60 id(new PhabricatorConfigEntry()) 61 ->loadOneWhere('namespace = %s AND key = %s', 'default', $key), 62 PhabricatorContentSource::newConsoleSource()); 63 $key_count++; 64 $console->writeOut(pht( 65 'Migrated option "%s" from file to database config.', $key)."\n"); 66 } 67 } 68 } 69 } 70 71 $console->writeOut(pht( 72 'Done. Migrated %d keys.', $key_count)."\n"); 73 return 0; 74 } 75 76 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Sun Nov 30 09:20:46 2014 | Cross-referenced by PHPXref 0.7.1 |