[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/config/management/ -> PhabricatorConfigManagementMigrateWorkflow.php (source)

   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  }


Generated: Sun Nov 30 09:20:46 2014 Cross-referenced by PHPXref 0.7.1