sbfaulkner-rsql 0.9.4 → 0.9.5
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +0 -1
- data/bin/rsql +0 -79
- data/lib/rsql/rsql.rb +76 -0
- data/rsql.gemspec +1 -1
- metadata +1 -1
data/Rakefile
CHANGED
data/bin/rsql
CHANGED
@@ -4,86 +4,7 @@
|
|
4
4
|
# Created by: S. Brent Faulkner (brentf@unwwwired.net) 2007-08-29
|
5
5
|
#
|
6
6
|
|
7
|
-
require 'getoptlong'
|
8
|
-
require 'readline'
|
9
|
-
include Readline
|
10
|
-
require 'shellwords'
|
11
|
-
include Shellwords
|
12
|
-
require 'singleton'
|
13
|
-
|
14
7
|
require 'odbc'
|
15
8
|
|
16
9
|
require 'rsql/odbc'
|
17
10
|
require 'rsql/rsql'
|
18
|
-
|
19
|
-
|
20
|
-
module RSQL
|
21
|
-
COMMAND = File.basename($0)
|
22
|
-
|
23
|
-
opts = GetoptLong.new(
|
24
|
-
[ "--execute", "-e", GetoptLong::REQUIRED_ARGUMENT ],
|
25
|
-
[ "--mode", "-m", GetoptLong::REQUIRED_ARGUMENT ],
|
26
|
-
[ "--password", "-p", GetoptLong::REQUIRED_ARGUMENT ],
|
27
|
-
[ "--quiet", "-q", GetoptLong::NO_ARGUMENT ],
|
28
|
-
[ "--user", "-u", GetoptLong::REQUIRED_ARGUMENT ],
|
29
|
-
[ "--verbose", "-v", GetoptLong::NO_ARGUMENT ]
|
30
|
-
)
|
31
|
-
|
32
|
-
opts.each do |opt, arg|
|
33
|
-
OPTIONS[opt[/--(.*)/,1].to_sym] = arg
|
34
|
-
end
|
35
|
-
|
36
|
-
# to hide the noise from the ODBC driver
|
37
|
-
STDERR.reopen("/dev/null") unless OPTIONS[:verbose]
|
38
|
-
|
39
|
-
if ARGV.length > 1
|
40
|
-
puts "#{COMMAND}: too many arguments"
|
41
|
-
exit
|
42
|
-
end
|
43
|
-
|
44
|
-
if OPTIONS[:execute]
|
45
|
-
# a command requires a database
|
46
|
-
if ARGV.length < 1
|
47
|
-
puts "#{COMMAND}: no database specified"
|
48
|
-
exit
|
49
|
-
end
|
50
|
-
# force quiet-mode if command provided
|
51
|
-
OPTIONS[:quiet] = true
|
52
|
-
end
|
53
|
-
|
54
|
-
# set format for output
|
55
|
-
begin
|
56
|
-
ODBC::Statement.mode = OPTIONS[:mode]
|
57
|
-
rescue => e
|
58
|
-
puts "#{COMMAND}: #{e}"
|
59
|
-
exit
|
60
|
-
end
|
61
|
-
|
62
|
-
# quiet-mode wins over verbose-mode
|
63
|
-
OPTIONS.delete :verbose if OPTIONS[:quiet]
|
64
|
-
|
65
|
-
puts "#{COMMAND} v0.9.4 - Copyright (c) 2007-2008 unwwwired.net" unless OPTIONS[:quiet]
|
66
|
-
|
67
|
-
begin
|
68
|
-
# use dsn if provided
|
69
|
-
begin
|
70
|
-
RSQL.instance.use(ARGV[0]) if ARGV.length > 0
|
71
|
-
rescue ODBC::Error => error
|
72
|
-
puts "ERROR: #{error}"
|
73
|
-
end
|
74
|
-
|
75
|
-
if OPTIONS[:execute]
|
76
|
-
RSQL.execute OPTIONS[:execute]
|
77
|
-
else
|
78
|
-
# get (and process) each command line in turn
|
79
|
-
while command = readline("#{COMMAND}> ", true)
|
80
|
-
RSQL.execute command
|
81
|
-
end
|
82
|
-
end
|
83
|
-
rescue SystemExit
|
84
|
-
puts "Bye" unless OPTIONS[:quiet]
|
85
|
-
rescue => exception
|
86
|
-
puts %Q(INTERNAL ERROR: #{exception}\n#{exception.backtrace.join("\n")})
|
87
|
-
end
|
88
|
-
|
89
|
-
end
|
data/lib/rsql/rsql.rb
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
require 'getoptlong'
|
2
|
+
require 'readline'
|
3
|
+
include Readline
|
4
|
+
|
5
|
+
require 'shellwords'
|
6
|
+
include Shellwords
|
7
|
+
require 'singleton'
|
8
|
+
|
1
9
|
module RSQL
|
2
10
|
OPTIONS = { :mode => 'column', :password => '', :user => ENV['USER'] }
|
3
11
|
|
@@ -200,4 +208,72 @@ module RSQL
|
|
200
208
|
end
|
201
209
|
|
202
210
|
end
|
211
|
+
|
212
|
+
COMMAND = File.basename($0)
|
213
|
+
|
214
|
+
opts = GetoptLong.new(
|
215
|
+
[ "--execute", "-e", GetoptLong::REQUIRED_ARGUMENT ],
|
216
|
+
[ "--mode", "-m", GetoptLong::REQUIRED_ARGUMENT ],
|
217
|
+
[ "--password", "-p", GetoptLong::REQUIRED_ARGUMENT ],
|
218
|
+
[ "--quiet", "-q", GetoptLong::NO_ARGUMENT ],
|
219
|
+
[ "--user", "-u", GetoptLong::REQUIRED_ARGUMENT ],
|
220
|
+
[ "--verbose", "-v", GetoptLong::NO_ARGUMENT ]
|
221
|
+
)
|
222
|
+
|
223
|
+
opts.each do |opt, arg|
|
224
|
+
OPTIONS[opt[/--(.*)/,1].to_sym] = arg
|
225
|
+
end
|
226
|
+
|
227
|
+
# to hide the noise from the ODBC driver
|
228
|
+
STDERR.reopen("/dev/null") unless OPTIONS[:verbose]
|
229
|
+
|
230
|
+
if ARGV.length > 1
|
231
|
+
puts "#{COMMAND}: too many arguments"
|
232
|
+
exit
|
233
|
+
end
|
234
|
+
|
235
|
+
if OPTIONS[:execute]
|
236
|
+
# a command requires a database
|
237
|
+
if ARGV.length < 1
|
238
|
+
puts "#{COMMAND}: no database specified"
|
239
|
+
exit
|
240
|
+
end
|
241
|
+
# force quiet-mode if command provided
|
242
|
+
OPTIONS[:quiet] = true
|
243
|
+
end
|
244
|
+
|
245
|
+
# set format for output
|
246
|
+
begin
|
247
|
+
ODBC::Statement.mode = OPTIONS[:mode]
|
248
|
+
rescue => e
|
249
|
+
puts "#{COMMAND}: #{e}"
|
250
|
+
exit
|
251
|
+
end
|
252
|
+
|
253
|
+
# quiet-mode wins over verbose-mode
|
254
|
+
OPTIONS.delete :verbose if OPTIONS[:quiet]
|
255
|
+
|
256
|
+
puts "#{COMMAND} v0.9.5 - Copyright (c) 2007-2008 unwwwired.net" unless OPTIONS[:quiet]
|
257
|
+
|
258
|
+
begin
|
259
|
+
# use dsn if provided
|
260
|
+
begin
|
261
|
+
RSQL.instance.use(ARGV[0]) if ARGV.length > 0
|
262
|
+
rescue ODBC::Error => error
|
263
|
+
puts "ERROR: #{error}"
|
264
|
+
end
|
265
|
+
|
266
|
+
if OPTIONS[:execute]
|
267
|
+
RSQL.execute OPTIONS[:execute]
|
268
|
+
else
|
269
|
+
# get (and process) each command line in turn
|
270
|
+
while command = readline("#{COMMAND}> ", true)
|
271
|
+
RSQL.execute command
|
272
|
+
end
|
273
|
+
end
|
274
|
+
rescue SystemExit
|
275
|
+
puts "Bye" unless OPTIONS[:quiet]
|
276
|
+
rescue => exception
|
277
|
+
puts %Q(INTERNAL ERROR: #{exception}\n#{exception.backtrace.join("\n")})
|
278
|
+
end
|
203
279
|
end
|
data/rsql.gemspec
CHANGED