/**
  * Execute this command.
  *
  * @return int|void
  */
 protected function doExecute()
 {
     $model = new SchemaModel();
     $this->out()->out('Backing up...');
     // Backup
     $model->backup();
     $this->out()->out(sprintf('Database backup to: %s', $model->getState()->get('dump.path')));
     return;
 }
 /**
  * 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;
 }