Skip to content

Commit 562e60e

Browse files
authored
Validate any provided config dirs in si command (#3659)
* Validate any provided config dirs in si command * remove unused Use statements.
1 parent b302120 commit 562e60e

File tree

1 file changed

+26
-13
lines changed

1 file changed

+26
-13
lines changed

src/Commands/core/SiteInstallCommands.php

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,7 @@
88
use Drush\Commands\DrushCommands;
99
use Drush\Drush;
1010
use Drush\Exceptions\UserAbortException;
11-
use Drush\Log\LogLevel;
1211
use Drupal\Core\Config\FileStorage;
13-
use Consolidation\SiteAlias\SiteAliasManager;
1412
use Consolidation\SiteAlias\SiteAliasManagerAwareInterface;
1513
use Consolidation\SiteAlias\SiteAliasManagerAwareTrait;
1614
use Drush\Sql\SqlBase;
@@ -237,17 +235,10 @@ public function validate(CommandData $commandData)
237235
}
238236

239237
if ($config = $commandData->input()->getOption('config-dir')) {
240-
if (!file_exists($config)) {
241-
throw new \Exception('The config source directory does not exist.');
242-
}
243-
if (!is_dir($config)) {
244-
throw new \Exception('The config source is not a directory.');
245-
}
246-
// Skip config import with a warning if specified config dir is empty.
247-
if (!$this->hasConfigFiles($config)) {
248-
$this->logger()->warning(dt('Configuration import directory @config does not contain any configuration; will skip import.', ['@config' => $config]));
249-
$commandData->input()->setOption('config-dir', '');
250-
}
238+
$this->validateConfigDir($commandData, $config);
239+
}
240+
if ($existing = $commandData->input()->getOption('existing-config')) {
241+
$this->validateConfigDir($commandData, $existing);
251242
}
252243

253244
try {
@@ -436,4 +427,26 @@ public function serverGlobals($drupal_base_url)
436427
$_SERVER['HTTP_USER_AGENT'] = null;
437428
$_SERVER['SCRIPT_FILENAME'] = DRUPAL_ROOT . '/index.php';
438429
}
430+
431+
/**
432+
* Assure that a config directory exists and is populated.
433+
*
434+
* @param CommandData $commandData
435+
* @param $directory
436+
* @throws \Exception
437+
*/
438+
protected function validateConfigDir(CommandData $commandData, $directory)
439+
{
440+
if (!file_exists($directory)) {
441+
throw new \Exception(dt('The config source directory @config does not exist.', ['@config' => $directory]));
442+
}
443+
if (!is_dir($directory)) {
444+
throw new \Exception(dt('The config source @config is not a directory.', ['@config' => $directory]));
445+
}
446+
// Skip config import with a warning if specified config dir is empty.
447+
if (!$this->hasConfigFiles($directory)) {
448+
$this->logger()->warning(dt('Configuration import directory @config does not contain any configuration; will skip import.', ['@config' => $directory]));
449+
$commandData->input()->setOption('config-dir', '');
450+
}
451+
}
439452
}

0 commit comments

Comments
 (0)