Mercurial > hg > cmmr2012-drupal-site
annotate vendor/consolidation/site-process/src/Transport/VagrantTransport.php @ 5:12f9dff5fda9 tip
Update to Drupal core 8.7.1
author | Chris Cannam |
---|---|
date | Thu, 09 May 2019 15:34:47 +0100 |
parents | |
children |
rev | line source |
---|---|
Chris@5 | 1 <?php |
Chris@5 | 2 |
Chris@5 | 3 namespace Consolidation\SiteProcess\Transport; |
Chris@5 | 4 |
Chris@5 | 5 use Consolidation\SiteProcess\SiteProcess; |
Chris@5 | 6 use Consolidation\SiteProcess\Util\Escape; |
Chris@5 | 7 use Consolidation\SiteAlias\SiteAliasInterface; |
Chris@5 | 8 use Consolidation\SiteProcess\Util\Shell; |
Chris@5 | 9 |
Chris@5 | 10 /** |
Chris@5 | 11 * VagrantTransport knows how to wrap a command such that it runs on a remote |
Chris@5 | 12 * system via the vagrant cli. |
Chris@5 | 13 */ |
Chris@5 | 14 class VagrantTransport implements TransportInterface |
Chris@5 | 15 { |
Chris@5 | 16 protected $tty; |
Chris@5 | 17 protected $siteAlias; |
Chris@5 | 18 |
Chris@5 | 19 public function __construct(SiteAliasInterface $siteAlias) |
Chris@5 | 20 { |
Chris@5 | 21 $this->siteAlias = $siteAlias; |
Chris@5 | 22 } |
Chris@5 | 23 |
Chris@5 | 24 /** |
Chris@5 | 25 * @inheritdoc |
Chris@5 | 26 */ |
Chris@5 | 27 public function configure(SiteProcess $process) |
Chris@5 | 28 { |
Chris@5 | 29 $this->tty = $process->isTty(); |
Chris@5 | 30 } |
Chris@5 | 31 |
Chris@5 | 32 /** |
Chris@5 | 33 * inheritdoc |
Chris@5 | 34 */ |
Chris@5 | 35 public function wrap($args) |
Chris@5 | 36 { |
Chris@5 | 37 $transport = ['vagrant', 'ssh']; |
Chris@5 | 38 $transportOptions = $this->getTransportOptions(); |
Chris@5 | 39 $commandToExecute = $this->getCommandToExecute($args); |
Chris@5 | 40 |
Chris@5 | 41 return array_merge( |
Chris@5 | 42 $transport, |
Chris@5 | 43 $transportOptions, |
Chris@5 | 44 ['-c'], |
Chris@5 | 45 $commandToExecute |
Chris@5 | 46 ); |
Chris@5 | 47 } |
Chris@5 | 48 |
Chris@5 | 49 /** |
Chris@5 | 50 * @inheritdoc |
Chris@5 | 51 */ |
Chris@5 | 52 public function addChdir($cd_remote, $args) |
Chris@5 | 53 { |
Chris@5 | 54 return array_merge( |
Chris@5 | 55 [ |
Chris@5 | 56 'cd', |
Chris@5 | 57 $cd_remote, |
Chris@5 | 58 Shell::op('&&'), |
Chris@5 | 59 ], |
Chris@5 | 60 $args |
Chris@5 | 61 ); |
Chris@5 | 62 } |
Chris@5 | 63 |
Chris@5 | 64 /** |
Chris@5 | 65 * getTransportOptions returns the transport options for the tranport |
Chris@5 | 66 * mechanism itself |
Chris@5 | 67 */ |
Chris@5 | 68 protected function getTransportOptions() |
Chris@5 | 69 { |
Chris@5 | 70 return $this->tty ? ['-t'] : []; |
Chris@5 | 71 } |
Chris@5 | 72 |
Chris@5 | 73 /** |
Chris@5 | 74 * getCommandToExecute processes the arguments for the command to |
Chris@5 | 75 * be executed such that they are appropriate for the transport mechanism. |
Chris@5 | 76 */ |
Chris@5 | 77 protected function getCommandToExecute($args) |
Chris@5 | 78 { |
Chris@5 | 79 // Escape each argument for the target system and then join |
Chris@5 | 80 $args = Escape::argsForSite($this->siteAlias, $args); |
Chris@5 | 81 $commandToExecute = implode(' ', $args); |
Chris@5 | 82 |
Chris@5 | 83 return [$commandToExecute]; |
Chris@5 | 84 } |
Chris@5 | 85 } |