Skip to content

Commit d3e5b47

Browse files
Fixes #3883: Use SiteAliasWithConfig class (#3957)
1 parent 1de36fb commit d3e5b47

File tree

8 files changed

+61
-45
lines changed

8 files changed

+61
-45
lines changed

.scenarios.lock/php5/composer.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@
6363
"consolidation/filter-via-dot-access-data": "^1",
6464
"consolidation/output-formatters": "^3.3.1",
6565
"consolidation/robo": "^1.4.6",
66-
"consolidation/site-alias": "^2.1.1",
67-
"consolidation/site-process": "^2.0.0-beta3",
66+
"consolidation/site-alias": "^3.0.0-alpha1",
67+
"consolidation/site-process": "^2.0.0-beta4",
6868
"grasmash/yaml-expander": "^1.1.1",
6969
"league/container": "~2",
7070
"psr/log": "~1.0",

.scenarios.lock/php5/composer.lock

Lines changed: 12 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

composer.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@
3939
"consolidation/filter-via-dot-access-data": "^1",
4040
"consolidation/output-formatters": "^3.3.1",
4141
"consolidation/robo": "^1.4.6",
42-
"consolidation/site-alias": "^2.1.1",
43-
"consolidation/site-process": "^2.0.0-beta3",
42+
"consolidation/site-alias": "^3.0.0-alpha1",
43+
"consolidation/site-process": "^2.0.0-beta4",
4444
"grasmash/yaml-expander": "^1.1.1",
4545
"league/container": "~2",
4646
"psr/log": "~1.0",

composer.lock

Lines changed: 12 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

includes/exec.inc

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -220,9 +220,8 @@ function drush_which($command) {
220220
*
221221
*/
222222
function drush_shell_proc_build(AliasRecord $site, $command = '', $cd = NULL, $interactive = FALSE) {
223-
// Build up the command. TODO: We maybe refactor this soon.
224223
$hostname = $site->remoteHostWithUser();
225-
$ssh_options = $site->getConfig(Drush::config(), 'ssh.options', "-o PasswordAuthentication=no");
224+
$ssh_options = drush_get_site_alias_config($site, 'ssh.options', "-o PasswordAuthentication=no");
226225
$os = drush_os($site);
227226
if ($site->get('tty') || $interactive) {
228227
$ssh_options .= ' -t';
@@ -287,7 +286,17 @@ function drush_os($site_record = NULL) {
287286
return legacy_drush_os($site_record);
288287
}
289288
// n.b. $options['remote-os'] has become 'ssh.os' in drush.yml
290-
return $site_record->getConfig(Drush::config(), 'ssh.os', 'Linux');
289+
return drush_get_site_alias_config($site_record, 'ssh.os', 'Linux');
290+
}
291+
292+
function drush_get_site_alias_config($site_record, $key, $default)
293+
{
294+
$config = Drush::config();
295+
$configRuntime = $config->getContext(ConfigOverlay::PROCESS_CONTEXT);
296+
297+
$siteAliasWithConfig = new SiteAliasWithConfig($configRuntime, $site_record, $config);
298+
299+
return $siteAliasWithConfig->get($key, $default);
291300
}
292301

293302
function legacy_drush_os($site_record = NULL) {

src/Drush.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
*/
77
namespace Drush;
88

9-
use Consolidation\SiteAlias\AliasRecord;
9+
use Consolidation\SiteAlias\AliasRecordInterface;
1010
use Consolidation\SiteAlias\SiteAliasManager;
1111
use Consolidation\SiteProcess\ProcessBase;
1212
use Consolidation\SiteProcess\SiteProcess;
@@ -335,14 +335,14 @@ public static function output()
335335
* Clients that are using Drush::drush(), and need a reference to the alias
336336
* manager may use Drush::aliasManager().
337337
*
338-
* @param AliasRecord $siteAlias
338+
* @param AliasRecordInterface $siteAlias
339339
* @param string $command
340340
* @param array $args
341341
* @param array $options
342342
* @param array $options_double_dash
343343
* @return SiteProcess
344344
*/
345-
public static function drush(AliasRecord $siteAlias, $command, $args = [], $options = [], $options_double_dash = [])
345+
public static function drush(AliasRecordInterface $siteAlias, $command, $args = [], $options = [], $options_double_dash = [])
346346
{
347347
$processManager = self::service('process.manager');
348348
return $processManager->drush($siteAlias, $command, $args, $options, $options_double_dash);
@@ -354,13 +354,13 @@ public static function drush(AliasRecord $siteAlias, $command, $args = [], $opti
354354
* Use Drush::drush() instead of this method when calling Drush.
355355
* Tip: Consider using injected process manager instead of this method. @see \Drush\Drush::drush().
356356
*
357-
* @param AliasRecord $siteAlias
357+
* @param AliasRecordInterface $siteAlias
358358
* @param array $args
359359
* @param array $options
360360
* @param array $options_double_dash
361361
* @return ProcessBase
362362
*/
363-
public static function siteProcess(AliasRecord $siteAlias, $args = [], $options = [], $options_double_dash = [])
363+
public static function siteProcess(AliasRecordInterface $siteAlias, $args = [], $options = [], $options_double_dash = [])
364364
{
365365
$processManager = self::service('process.manager');
366366
return $processManager->siteProcess($siteAlias, $args, $options, $options_double_dash);

src/Runtime/DependencyInjection.php

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
use League\Container\ContainerInterface;
1414
use Consolidation\SiteAlias\SiteAliasManager;
1515
use Drush\Command\DrushCommandInfoAlterer;
16+
use Consolidation\Config\Util\ConfigOverlay;
17+
use Drush\Config\DrushConfig;
1618

1719
/**
1820
* Prepare our Dependency Injection Container
@@ -52,7 +54,7 @@ public function initContainer(
5254
\Robo\Robo::configureContainer($container, $application, $config, $input, $output);
5355
$container->add('container', $container);
5456

55-
$this->addDrushServices($container, $loader, $drupalFinder, $aliasManager);
57+
$this->addDrushServices($container, $loader, $drupalFinder, $aliasManager, $config);
5658

5759
// Store the container in the \Drush object
5860
Drush::setContainer($container);
@@ -77,7 +79,7 @@ public function installHandlers($container)
7779
}
7880
}
7981

80-
protected function addDrushServices(ContainerInterface $container, ClassLoader $loader, DrupalFinder $drupalFinder, SiteAliasManager $aliasManager)
82+
protected function addDrushServices(ContainerInterface $container, ClassLoader $loader, DrupalFinder $drupalFinder, SiteAliasManager $aliasManager, DrushConfig $config)
8183
{
8284
// Override Robo's logger with our own
8385
$container->share('logger', 'Drush\Log\Logger')
@@ -87,6 +89,10 @@ protected function addDrushServices(ContainerInterface $container, ClassLoader $
8789
$container->share('loader', $loader);
8890
$container->share('site.alias.manager', $aliasManager);
8991

92+
// Fetch the runtime config, where -D et. al. are stored, and
93+
// add a reference to it to the container.
94+
$container->share('config.runtime', $config->getContext(ConfigOverlay::PROCESS_CONTEXT));
95+
9096
// Override Robo's formatter manager with our own
9197
// @todo not sure that we'll use this. Maybe remove it.
9298
$container->share('formatterManager', \Drush\Formatters\DrushFormatterManager::class)
@@ -107,6 +113,7 @@ protected function addDrushServices(ContainerInterface $container, ClassLoader $
107113
$container->share('docker-compose.transport', \Consolidation\SiteProcess\Factory\DockerComposeTransportFactory::class);
108114
$container->share('process.manager', 'Drush\SiteAlias\ProcessManager')
109115
->withMethodCall('setConfig', ['config'])
116+
->withMethodCall('setConfigRuntime', ['config.runtime'])
110117
->withMethodCall('add', ['ssh.transport'])
111118
->withMethodCall('add', ['docker-compose.transport']);
112119
$container->share('redispatch.hook', 'Drush\Runtime\RedispatchHook')

src/SiteAlias/ProcessManager.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
use Consolidation\SiteProcess\Util\Escape;
77
use Psr\Log\LoggerInterface;
8-
use Consolidation\SiteAlias\AliasRecord;
8+
use Consolidation\SiteAlias\AliasRecordInterface;
99
use Consolidation\SiteProcess\Factory\TransportFactoryInterface;
1010
use Symfony\Component\Process\Process;
1111
use Drush\Drush;
@@ -22,14 +22,14 @@ class ProcessManager extends ConsolidationProcessManager
2222
/**
2323
* Run a Drush command on a site alias (or @self).
2424
*
25-
* @param AliasRecord $siteAlias
25+
* @param AliasRecordInterface $siteAlias
2626
* @param string $command
2727
* @param array $args
2828
* @param array $options
2929
* @param array $options_double_dash
3030
* @return SiteProcess
3131
*/
32-
public function drush(AliasRecord $siteAlias, $command, $args = [], $options = [], $options_double_dash = [])
32+
public function drush(AliasRecordInterface $siteAlias, $command, $args = [], $options = [], $options_double_dash = [])
3333
{
3434
array_unshift($args, $command);
3535
return $this->drushSiteProcess($siteAlias, $args, $options, $options_double_dash);
@@ -40,13 +40,13 @@ public function drush(AliasRecord $siteAlias, $command, $args = [], $options = [
4040
* drushSiteProcess exists specifically for use by the RedispatchHook,
4141
* which does not have specific knowledge about which argument is the command.
4242
*
43-
* @param AliasRecord $siteAlias
43+
* @param AliasRecordInterface $siteAlias
4444
* @param array $args
4545
* @param array $options
4646
* @param array $options_double_dash
4747
* @return ProcessBase
4848
*/
49-
public function drushSiteProcess(AliasRecord $siteAlias, $args = [], $options = [], $options_double_dash = [])
49+
public function drushSiteProcess(AliasRecordInterface $siteAlias, $args = [], $options = [], $options_double_dash = [])
5050
{
5151
// Fill in the root and URI from the site alias, if the caller
5252
// did not already provide them in $options.
@@ -66,7 +66,7 @@ public function drushSiteProcess(AliasRecord $siteAlias, $args = [], $options =
6666
/**
6767
* Determine the path to Drush to use
6868
*/
69-
public function drushScript(AliasRecord $siteAlias)
69+
public function drushScript(AliasRecordInterface $siteAlias)
7070
{
7171
$defaultDrushScript = 'drush';
7272

@@ -101,7 +101,7 @@ public function drushScript(AliasRecord $siteAlias)
101101
* Use Drush::drush() or ProcessManager::drush() instead of this method
102102
* when calling Drush.
103103
*/
104-
public function siteProcess(AliasRecord $siteAlias, $args = [], $options = [], $optionsPassedAsArgs = [])
104+
public function siteProcess(AliasRecordInterface $siteAlias, $args = [], $options = [], $optionsPassedAsArgs = [])
105105
{
106106
$process = parent::siteProcess($siteAlias, $args, $options, $optionsPassedAsArgs);
107107
return $this->configureProcess($process);

0 commit comments

Comments
 (0)