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 }