Merge "alter sql.php prompt on line continuation"
authorDemon <chadh@wikimedia.org>
Thu, 25 Oct 2012 13:35:32 +0000 (13:35 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Thu, 25 Oct 2012 13:35:32 +0000 (13:35 +0000)
1  2 
maintenance/sql.php

diff --combined maintenance/sql.php
@@@ -63,27 -63,33 +63,36 @@@ class MwSql extends Maintenance 
                }
  
                $wholeLine = '';
-               while ( ( $line = Maintenance::readconsole() ) !== false ) {
+               $newPrompt = '> ';
+               $prompt    = $newPrompt;
+               while ( ( $line = Maintenance::readconsole( $prompt ) ) !== false ) {
+                       if( !$line ) {
+                               # User simply pressed return key
+                               continue;
+                       }
                        $done = $dbw->streamStatementEnd( $wholeLine, $line );
  
                        $wholeLine .= $line;
  
                        if ( !$done ) {
+                               $wholeLine .= ' ';
+                               $prompt = '    -> ';
                                continue;
                        }
                        if ( $useReadline ) {
 -                              readline_add_history( $wholeLine );
 +                              # Delimiter is eated by streamStatementEnd, we add it
 +                              # up in the history (bug 37020)
 +                              readline_add_history( $wholeLine . $dbw->getDelimiter() );
                                readline_write_history( $historyFile );
                        }
                        try{
                                $res = $dbw->query( $wholeLine );
                                $this->sqlPrintResult( $res, $dbw );
+                               $prompt    = $newPrompt;
                                $wholeLine = '';
                        } catch (DBQueryError $e) {
 -                              $this->error( $e, true );
 +                              $doDie = ! Maintenance::posix_isatty( 0 );
 +                              $this->error( $e, $doDie );
                        }
                }
        }