ruby - Adding readline to sqlite3 -


i tried create script add readline abilities sqlite3 commands history , moving cursor. came far:

#!/usr/bin/env ruby  require 'pty' require 'expect' require 'readline'  pty.spawn("sqlite3") |reader, writer, pid|     reader.expect("sqlite> ")     writer.puts(readline.readline("sqlite> ", true)) end 

but have no idea how print output of command entered. appreciate on this. thanks!

i had play after finding this tutorial.

require 'pty' require 'expect' require 'readline'   pty.spawn("sqlite3") |reader, writer, pid|    cmd = readline.readline("prompt> ", true);    reader.expect(/^sqlite\>/) {  |r| writer.printf("%s\n",cmd) }    puts reader.expect(/^sqlite\>/)[0] end 

so in nutshell, example, need add this:

 puts reader.expect("sqlite> ")[0] 

playing bit more added little loop asks commands, sends them sqllite3 , sends result:

require 'pty' require 'expect' require 'readline'   pty.spawn("sqlite3") |reader, writer, pid|    reader.expect(/^sqlite\>/)                   # read till prompt.    loop {       cmd = readline.readline("prompt> ", true);   # command.       writer.printf("%s\n",cmd)                    # send it.        r = reader.expect(/^sqlite\>/)               # result       r[0].lines.to_a[0..-2].each |l|           # turn array without last line.          unless l.match(/^ /)                      # ignore indented lines             puts l                                 # show result user          end       end    end 

the r[0].lines.to_a[0..-2].join black magic remove last line.


Comments

Popular posts from this blog

commonjs - How to write a typescript definition file for a node module that exports a function? -

openid - Okta: Failed to get authorization code through API call -

ios - Change Storyboard View using Seague -