Monday, October 10, 2016

Drush 6 x pipe issue

Drush 6 x pipe issue


Drush is a great tool to manage Drupal.  However, the command syntax occasionally breaks between major versions.  For example, when I upgraded from Drush 5.9 to 6.2 I noticed my commands that included --pipe now provided output in json format by default (instead of the previous string default).  That broke a number of my scripts because they were expecting plain strings.  After some google searching I deduced I needed to add a --format=[something magical here] but even though https://github.com/drush-ops/drush/blob/master/tests/outputFormatUnitTest.php said --format=string should work, it didnt.  That parameter threw this error:

[error] The output data could not be processed by the selected format string.  The command core-status does not produce output in a structure usable by this output format.

Fortunately, the unit test mentioned above also listed --format=list which (at least in the unit test) appears to do the same thing (update: the output looks the same if result is a single line but arrays need list format and single line responses need string format, which is why json is the default format because it can handle both) and lo and behold it worked!  So anywhere you used to use (correction: some drush commands accept the --format parameter and some dont so try each original command first to see if it needs --format=list) 
drush [command] --pipe 
instead use 
drush [command] --format=list --pipe


P.S. Drush 6.2 also chokes on %dump and %dump-dir in your alias files.  I just removed them since I implemented my own sql-sync process since Drushs was so slow and buggy.

Go to link download