namespace Drupal\Console\Command\Shared;
use Drupal\Component\Serialization\Yaml;
-use Drupal\Console\Core\Style\DrupalStyle;
+use Symfony\Component\Console\Exception\InvalidOptionException;
/**
* Class ConfigExportTrait
* @param bool|false $uuid
* @return mixed
*/
- protected function getConfiguration($configName, $uuid = false, $hash = false)
+ protected function getConfiguration($configName, $uuid = false, $hash = false, $collection = '')
{
- $config = $this->configStorage->read($configName);
-
+ $config = $this->configStorage->createCollection($collection)->read($configName);
// Exclude uuid base in parameter, useful to share configurations.
if ($uuid) {
unset($config['uuid']);
}
-
+
// Exclude default_config_hash inside _core is site-specific.
if ($hash) {
unset($config['_core']['default_config_hash']);
+
+ // Remove empty _core to match core's output.
+ if (empty($config['_core'])) {
+ unset($config['_core']);
+ }
}
-
+
return $config;
}
/**
* @param string $directory
- * @param DrupalStyle $io
+ * @param string $message
*/
- protected function exportConfig($directory, DrupalStyle $io, $message)
+ protected function exportConfig($directory, $message)
{
- $io->info($message);
+ $directory = realpath($directory);
+ $this->getIo()->info($message);
foreach ($this->configExport as $fileName => $config) {
$yamlConfig = Yaml::encode($config['data']);
$fileName
);
- $io->info('- ' . $configFile);
+ $this->getIo()->writeln('- ' . $configFile);
// Create directory if doesn't exist
if (!file_exists($directory)) {
}
/**
- * @param string $module
- * @param DrupalStyle $io
+ * @param string $moduleName
+ * @param string $message
*/
- protected function exportConfigToModule($module, DrupalStyle $io, $message)
+ protected function exportConfigToModule($moduleName, $message)
{
- $io->info($message);
+ $this->getIo()->info($message);
- $module = $this->extensionManager->getModule($module);
+ $module = $this->extensionManager->getModule($moduleName);
+
+ if (empty($module)) {
+ throw new InvalidOptionException(sprintf('The module %s does not exist.', $moduleName));
+ }
foreach ($this->configExport as $fileName => $config) {
$yamlConfig = Yaml::encode($config['data']);
$fileName
);
- $io->info('- ' . $configFile);
+ $this->getIo()->info('- ' . $configFile);
// Create directory if doesn't exist
if (!file_exists($configDirectory)) {
}
}
- protected function exportModuleDependencies($io, $module, $dependencies)
+ protected function exportModuleDependencies($module, $dependencies)
{
$module = $this->extensionManager->getModule($module);
$info_yaml = $module->info;
}
if (file_put_contents($module->getPathname(), Yaml::encode($info_yaml))) {
- $io->info(
+ $this->getIo()->info(
'[+] ' .
sprintf(
$this->trans('commands.config.export.view.messages.depencies-included'),
);
foreach ($dependencies as $dependency) {
- $io->info(
+ $this->getIo()->info(
' [-] ' . $dependency
);
}
} else {
- $io->error($this->trans('commands.site.mode.messages.error-writing-file') . ': ' . $this->getApplication()->getSite()->getModuleInfoFile($module));
+ $this->getIo()->error($this->trans('commands.site.mode.messages.error-writing-file') . ': ' . $this->getApplication()->getSite()->getModuleInfoFile($module));
return [];
}