Skip to content

Commit 4402f05

Browse files
author
Bertrand PRESLES
committed
Added ability to use chain command for importing or exporting multiple configs with the config:import:single and config:export:single commands
1 parent b6c2303 commit 4402f05

File tree

7 files changed

+108
-635
lines changed

7 files changed

+108
-635
lines changed

config/services/drupal-console/config.yml

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,6 @@ services:
3434
arguments: ['@entity_type.manager', '@config.storage']
3535
tags:
3636
- { name: drupal.command }
37-
console.config_export_list:
38-
class: Drupal\Console\Command\Config\ExportListCommand
39-
arguments: ['@entity_type.manager', '@config.storage']
40-
tags:
41-
- { name: drupal.command }
4237
console.config_export_view:
4338
class: Drupal\Console\Command\Config\ExportViewCommand
4439
arguments: ['@entity_type.manager', '@config.storage', '@console.extension_manager']
@@ -54,11 +49,6 @@ services:
5449
arguments: ['@config.storage', '@config.manager']
5550
tags:
5651
- { name: drupal.command }
57-
console.config_import_list:
58-
class: Drupal\Console\Command\Config\ImportListCommand
59-
arguments: ['@config.storage', '@config.manager']
60-
tags:
61-
- { name: drupal.command }
6252
console.config_override:
6353
class: Drupal\Console\Command\Config\OverrideCommand
6454
arguments: ['@config.storage', '@config.factory']

export-config-list-sample.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
commands:
2+
- command: 'config:export:single'
3+
options:
4+
config-names:
5+
- core.extension
6+
- system.site

import-config-list-sample.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
commands:
2+
- command: 'config:import:single'
3+
options:
4+
config-names:
5+
- system.site
6+
- core.extension

src/Command/Config/ExportListCommand.php

Lines changed: 0 additions & 293 deletions
This file was deleted.

src/Command/Config/ExportSingleCommand.php

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,15 @@ protected function configure()
6161
->setDescription($this->trans('commands.config.export.single.description'))
6262
->addArgument(
6363
'config-name',
64-
InputArgument::REQUIRED,
64+
InputArgument::OPTIONAL,
6565
$this->trans('commands.config.export.single.arguments.config-name')
6666
)
67+
->addOption(
68+
'config-names',
69+
null,
70+
InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY,
71+
$this->trans('commands.config.export.single.arguments.config-names')
72+
)
6773
->addOption(
6874
'directory',
6975
'',
@@ -229,28 +235,32 @@ protected function execute(InputInterface $input, OutputInterface $output)
229235

230236
$directory = $input->getOption('directory');
231237
$module = $input->getOption('module');
232-
$configName = $input->getArgument('config-name');
238+
$configNames = $input->getOption('config-names');
239+
$configNameArg = $input->getArgument('config-name');
233240
$optionalConfig = $input->getOption('optional-config');
234241
$removeUuid = $input->getOption('remove-uuid');
235242
$removeHash = $input->getOption('remove-config-hash');
236243

237-
$config = $this->getConfiguration($configName, $removeUuid, $removeHash);
238-
239-
if ($config) {
240-
if (!$directory) {
241-
$directory = config_get_config_directory(CONFIG_SYNC_DIRECTORY);
242-
}
243-
244-
$this->configExport[$configName] = array('data' => $config, 'optional' => $optionalConfig);
244+
if (empty($configNames) && isset($configNameArg)) {
245+
$configNames = array($configNameArg);
246+
}
245247

246-
if ($input->getOption('include-dependencies')) {
247-
// Include config dependencies in export files
248-
if ($dependencies = $this->fetchDependencies($config, 'config')) {
249-
$this->resolveDependencies($dependencies, $optionalConfig);
248+
foreach ($configNames as $configName) {
249+
$config = $this->getConfiguration($configName, $removeUuid, $removeHash);
250+
$config = $this->getConfiguration($configName, false);
251+
252+
if ($config) {
253+
$this->configExport[$configName] = array('data' => $config, 'optional' => $optionalConfig);
254+
255+
if ($input->getOption('include-dependencies')) {
256+
// Include config dependencies in export files
257+
if ($dependencies = $this->fetchDependencies($config, 'config')) {
258+
$this->resolveDependencies($dependencies, $optionalConfig);
259+
}
250260
}
261+
} else {
262+
$io->error($this->trans('commands.config.export.single.messages.config-not-found'));
251263
}
252-
} else {
253-
$io->error($this->trans('commands.config.export.single.messages.config-not-found'));
254264
}
255265

256266
if (!$module) {

0 commit comments

Comments
 (0)