setName('kaliop:migration:status') ->setDescription('List available migration definitions and their statuses.') ->addOption( 'versions', null, InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY, "The directory or file to load the migration instructions from" ) ->setHelp( <<kaliop:migration:status command displays the status of all available migrations in your bundles: ./ezpublish/console kaliop:migration:status You can optionally specify the path to migration versions with the --versions: ./ezpublish/console kaliop:migrations:status --versions=/path/to/bundle/version directory name/version1 --versions=/path/to/bundle/version directory name/version2 EOT ); } /** * Run the command and display the results. * * @param InputInterface $input * @param OutputInterface $output * @return int|null|void */ public function execute(InputInterface $input, OutputInterface $output) { // Get paths to look for version files in $versions = $input->getOption('versions'); $configuration = $this->getConfiguration($input, $output); if ($versions) { $paths = is_array($versions) ? $versions : array($versions); $paths = $this->groupPathsByBundle($paths); } else { $paths = $this->groupPathsByBundle($this->getBundlePaths()); } //Check paths for version files /* @var $configuration \Kaliop\eZMigrationBundle\Core\Configuration */ $configuration->registerVersionFromDirectories($paths); if ($bundleVersions = $configuration->getVersions()) { $migratedVersions = $configuration->getMigratedVersions(); $output->writeln("\n == Available Migration Versions\n"); foreach ($bundleVersions as $bundle => $versions) { $output->writeln("{$bundle}:"); foreach ($versions as $versionNumber => $versionClass) { /** @var $versionClass \Kaliop\eZMigrationBundle\Core\Version */ $isMigrated = array_key_exists($bundle, $migratedVersions) && in_array( $versionNumber, $migratedVersions[$bundle] ); $status = $isMigrated ? " < migrated > " : "< not migrated >"; $output->writeln( $status . " " . date( "Y-m-d H:i:s", strtotime($versionNumber) ) . " ({$versionNumber}) ($versionClass->type) : " . $versionClass->description ); } $output->writeln(''); } } else { $output->writeln('No versions found. Exiting...'); } } } ?>