drush-ops/drush — pull request #436 by greg-1-anderson (2014-02-07 05:11:51+00:00)
Title: Force the creation of a pseudo-tty for all remote commands.

This PR cleans up the implementation of the remote case of the core-cli command, and makes the sql-cli command work remotely. core-topic also works remotely now, for what that is worth.

This is accomplished by forcing pseudo-tty creation for all remote drush commands. Doing this universally does not have any negative impact on Drush (e.g. sql-sync can still successfully retrieve remote db info via sql-conf, etc), but it does have the side effect that remote commands (e.g. `drush @remote cc all`) now print "Connection closed by ..." when finished.

We could get rid of the "Connection closed by..." if we introduced a new command record flag, 'create-terminal-for-remote', which would be set similarly to (but never at the same time as) the existing 'handle-remote-commands' flag. Our new flag would signal backend invoke to create the pseudo-tty. The disadvantage of this implementation is that the local Drush instance must have a local implementation of command "foo" available in order to run a remote "foo" command with a pseudo-tty. Since there are only a few commands that really need the pseudo-tty, this is probably preferable, but I thought I'd ask opinions before implementing it that way, since the "Connection closed" message is innocuous.