Chris@5: siteAlias = $siteAlias; Chris@5: } Chris@5: Chris@5: /** Chris@5: * @inheritdoc Chris@5: */ Chris@5: public function configure(SiteProcess $process) Chris@5: { Chris@5: $this->tty = $process->isTty(); Chris@5: } Chris@5: Chris@5: /** Chris@5: * inheritdoc Chris@5: */ Chris@5: public function wrap($args) Chris@5: { Chris@5: $transport = ['ssh']; Chris@5: $transportOptions = $this->getTransportOptions(); Chris@5: $commandToExecute = $this->getCommandToExecute($args); Chris@5: Chris@5: return array_merge( Chris@5: $transport, Chris@5: $transportOptions, Chris@5: $commandToExecute Chris@5: ); Chris@5: } Chris@5: Chris@5: /** Chris@5: * @inheritdoc Chris@5: */ Chris@5: public function addChdir($cd_remote, $args) Chris@5: { Chris@5: return array_merge( Chris@5: [ Chris@5: 'cd', Chris@5: $cd_remote, Chris@5: Shell::op('&&'), Chris@5: ], Chris@5: $args Chris@5: ); Chris@5: } Chris@5: Chris@5: /** Chris@5: * getTransportOptions returns the transport options for the tranport Chris@5: * mechanism itself Chris@5: */ Chris@5: protected function getTransportOptions() Chris@5: { Chris@5: $transportOptions = [ Chris@5: Shell::preEscaped($this->siteAlias->get('ssh.options', '-o PasswordAuthentication=no')), Chris@5: $this->siteAlias->remoteHostWithUser(), Chris@5: ]; Chris@5: if ($this->tty) { Chris@5: array_unshift($transportOptions, '-t'); Chris@5: } Chris@5: return $transportOptions; Chris@5: } Chris@5: Chris@5: /** Chris@5: * getCommandToExecute processes the arguments for the command to Chris@5: * be executed such that they are appropriate for the transport mechanism. Chris@5: */ Chris@5: protected function getCommandToExecute($args) Chris@5: { Chris@5: // Escape each argument for the target system and then join Chris@5: $args = Escape::argsForSite($this->siteAlias, $args); Chris@5: $commandToExecute = implode(' ', $args); Chris@5: Chris@5: return [$commandToExecute]; Chris@5: } Chris@5: }