/** * Execute this command. * * @return int|void */ protected function doExecute() { $type = $this->getOption('s') ? 'sql' : 'yaml'; $model = new SchemaModel(); if ($this->getOption('a')) { $profiles = ProfileHelper::getAllProfiles(); } else { $profiles = $this->io->getArguments() ?: array(ProfileHelper::getProfile()); } $config = Factory::getConfig(); foreach ($profiles as $profile) { $config->set('profile', $profile); // Check schema. $path = $model->getPath($type); if (file_exists($path) && !$this->getOption('y')) { $prompter = new BooleanPrompter(sprintf('Schema file <info>%s</info> exists, do you want to override it? [Y/n]: ', $profile)); if (!$prompter->ask()) { $this->out('cancelled.'); return; } } // Exporting $this->out()->out('<comment>Exporting</comment> profile schema: <info>' . $profile . '</info>'); $model->export($type); $this->out()->out(sprintf('Schema file dumped to: <info>%s</info>', $model->getState()->get('dump.path'))); } /* $yaml = $this->getOption('yaml'); $exporter = $yaml ? new YamlExporter : new SqlExporter; $result = $exporter->export(); $config = \JFactory::getConfig(); $file = 'site-' . $config->get('db') . '-' . date('Y-m-d-H-i-s'); if ($yaml) { $file .= '.yml'; } else { $file .= '.sql'; } $file = JCONSOLE . '/jconsole/resource/sql/export/' . ($yaml ? 'yaml/' : '') . $file; \JFile::write($file, $result); $this->out()->out(sprintf('Sql file dumped to: %s', $file)); */ }
/** * Execute this command. * * @return int|void */ protected function doExecute() { $tableModel = new Table(); if ($this->getOption('a')) { $profiles = ProfileHelper::getAllProfiles(); } else { $profiles = $this->io->getArguments() ?: array(ProfileHelper::getProfile()); } $config = Factory::getConfig(); foreach ($profiles as $profile) { $config->set('profile', $profile); $tableModel->sync(); $path = $tableModel->getState()->get('track.save.path'); $this->out()->out('Sync all tracking status to: ' . $path); } return; }
/** * getItems * * @return array */ public function getItems() { $config = Factory::getConfig(); $current = $config->get('profile', 'default'); $profiles = new \FilesystemIterator(SQLSYNC_PROFILE, \FilesystemIterator::SKIP_DOTS); $items = array(); foreach ($profiles as $profile) { if ($profile->isFile()) { continue; } $item = new \Stdclass(); $item->title = $profile->getBasename(); $item->is_current = $current == $item->title; $item->current_version = ''; $items[] = $item; } return $items; }
/** * getProfile * * @return mixed */ public static function getProfile() { $config = Factory::getConfig(); return $config->get('profile', 'default'); }
/** * Execute this command. * * @throws \RuntimeException * @return int|void */ protected function doExecute() { $type = $this->getOption('s') ? 'sql' : 'yaml'; $model = new SchemaModel(); $path = $model->getPath($type); if (file_exists($path) && !$this->getOption('y')) { $prompter = new BooleanPrompter('This action will compare and update your sql schema [Y/n]: '); if (!$prompter->ask()) { $this->out('cancelled.'); return; } } elseif (!file_exists($path)) { throw new \RuntimeException('Schema file not exists.'); } $force = $this->getOption('f'); if ($force) { throw new \RuntimeException('Sorry, force mode not prepare yet...'); } $state = $model->getState(); if ($this->getOption('a')) { $profiles = ProfileHelper::getAllProfiles(); } else { $profiles = $this->io->getArguments() ?: array(ProfileHelper::getProfile()); } $config = Factory::getConfig(); foreach ($profiles as $profile) { $config->set('profile', $profile); // Backup $this->out()->out(sprintf('<comment>Backing up</comment> profile <info>%s</info> ...', $profile)); $model->backup(); $this->out()->out(sprintf('Schema file backup to: %s', $model->getState()->get('dump.path'))); // Import $this->out()->out(sprintf('<option>Importing</option> profile schema: <info>%s</info> ...', $profile)); $model->import($force, $type); $this->out()->out(sprintf('Schema file dumped to: %s', $model->getState()->get('dump.path'))); // Report $analyze = $state->get('import.analyze'); foreach ($analyze as $table => $schema) { $this->out()->out($table . ':'); foreach ($schema as $action => $count) { $this->out(' ' . $action . ': ' . $count); } } } return; }