sqlbible 1.10.0 → 1.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/sqlbible +63 -30
- data/lib/sqlbible/version.rb +1 -1
- data/lib/sqlbible.rb +3 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7da52363ec541fcc708621073829f7df31b6febc9938e91fb36dca8dd75dec6c
|
|
4
|
+
data.tar.gz: 2f63fe51fa3822359c9b53c7dbca34a0751963b1c73dbabb8cdafcc3baeadd6a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 0a7f112b478c8977d3f8ec1d37d261b836146a3bd98795bb7cecaebf1bba0f901318dc5c033c1f03328c5dad7cc324576c7558c2c84ef420e5d28af507f01b6e
|
|
7
|
+
data.tar.gz: 86426391c9c66162f9550ff6a48c50519f3a74691d34ab57fe8b8738a52c59c8e55b9993f7a0e840392ca2a7d2299341e4879f1059d036925d3fd791ca0be329
|
data/bin/sqlbible
CHANGED
|
@@ -22,19 +22,72 @@ class Cli
|
|
|
22
22
|
private
|
|
23
23
|
|
|
24
24
|
def parse_args
|
|
25
|
+
if ARGV.empty?
|
|
26
|
+
reline_args
|
|
27
|
+
@opts = parsed_opts
|
|
28
|
+
else
|
|
29
|
+
@opts = parsed_opts
|
|
30
|
+
if @opts[:interactive]
|
|
31
|
+
reline_args
|
|
32
|
+
opts = parsed_opts
|
|
33
|
+
opts.each_pair do |k, v|
|
|
34
|
+
if k.to_s =~ /^(.+)_given$/
|
|
35
|
+
new_k = $1.to_sym
|
|
36
|
+
@opts[new_k] = opts[new_k]
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
@regexes = ARGV.map {|s| Regexp.new(s)}
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def reline_args
|
|
45
|
+
load_history
|
|
46
|
+
loop do
|
|
47
|
+
l = Reline.readline('> ', false)&.chomp
|
|
48
|
+
break if l.nil? || l =~ /^$/
|
|
49
|
+
if l =~ /^-/
|
|
50
|
+
l.split(/\s+/, 2).each do |s|
|
|
51
|
+
ARGV << s
|
|
52
|
+
end
|
|
53
|
+
else
|
|
54
|
+
ARGV << l
|
|
55
|
+
end
|
|
56
|
+
if Sqlbible.history && !Reline::HISTORY.include?(l)
|
|
57
|
+
Reline::HISTORY << l
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
rescue Interrupt
|
|
61
|
+
exit
|
|
62
|
+
ensure
|
|
63
|
+
write_history
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def load_history
|
|
67
|
+
if Sqlbible.history && File.exist?(Sqlbible.history_file)
|
|
68
|
+
File.readlines(Sqlbible.history_file, chomp: true).each do |line|
|
|
69
|
+
Reline::HISTORY << line unless line.empty?
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def write_history
|
|
75
|
+
max_history = Reline::HISTORY.to_a.last(100)
|
|
76
|
+
return if max_history.empty?
|
|
77
|
+
File.write(Sqlbible.history_file, max_history.join("\n") + "\n")
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def parsed_opts
|
|
25
81
|
default_bible_param = {}
|
|
26
82
|
if b = Sqlbible.bible
|
|
27
83
|
default_bible_param[:default] = b.to_s
|
|
28
84
|
end
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
@opts = Optimist.options do
|
|
85
|
+
opts = Optimist.options do
|
|
32
86
|
synopsis 'Usage: sqlbible [options] [search regexes]*'
|
|
33
87
|
opt :bible, 'Name of the bible module or filename of an .sqlbible file', type: String, **default_bible_param
|
|
34
|
-
opt :color, 'Colorize output', default: Sqlbible.color
|
|
35
|
-
explizit_opts << :color
|
|
36
|
-
end
|
|
88
|
+
opt :color, 'Colorize output', default: Sqlbible.color
|
|
37
89
|
opt :env, 'Show infos of the sqlbible environment: installed bibles with schema versions'
|
|
90
|
+
opt :interactive, 'Interactive mode'
|
|
38
91
|
opt :lang, 'Language for parsing and formatting scripture references', type: String, permitted: %w(de en), default: Sqlbible.lang.to_s
|
|
39
92
|
opt :output, 'Output filename', type: String
|
|
40
93
|
opt :pager, 'Use pager for terminal output', default: Sqlbible.pager
|
|
@@ -42,14 +95,12 @@ class Cli
|
|
|
42
95
|
opt :stat, 'Statistics level', type: Integer, permitted: (0..2), default: Sqlbible.stat_level
|
|
43
96
|
version format("sqlbible %s\nschema version %s", Sqlbible::VERSION, Sqlbible.schema_version)
|
|
44
97
|
end
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
@opts[:color] = false
|
|
98
|
+
unless opts[:color_given]
|
|
99
|
+
if !$stdout.tty? || opts[:output]
|
|
100
|
+
opts[:color] = false
|
|
49
101
|
end
|
|
50
102
|
end
|
|
51
|
-
|
|
52
|
-
@regexes = ARGV.map {|s| Regexp.new(s)}
|
|
103
|
+
opts
|
|
53
104
|
end
|
|
54
105
|
|
|
55
106
|
def process_by_opts
|
|
@@ -179,22 +230,4 @@ class Cli
|
|
|
179
230
|
|
|
180
231
|
end
|
|
181
232
|
|
|
182
|
-
# interactive mode
|
|
183
|
-
if ARGV.empty?
|
|
184
|
-
begin
|
|
185
|
-
while (l = Reline.readline('> ', false))
|
|
186
|
-
break if l.empty?
|
|
187
|
-
if l =~ /^-/
|
|
188
|
-
l.split(/\s+/, 2).each do |s|
|
|
189
|
-
ARGV << s
|
|
190
|
-
end
|
|
191
|
-
else
|
|
192
|
-
ARGV << l
|
|
193
|
-
end
|
|
194
|
-
end
|
|
195
|
-
rescue Interrupt
|
|
196
|
-
exit
|
|
197
|
-
end
|
|
198
|
-
end
|
|
199
|
-
|
|
200
233
|
Cli.new.run
|
data/lib/sqlbible/version.rb
CHANGED
data/lib/sqlbible.rb
CHANGED
|
@@ -84,6 +84,8 @@ class Sqlbible
|
|
|
84
84
|
@bibles_dir = File.join(Dir.home, '.sqlbible/bibles')
|
|
85
85
|
@color_reference = :blue
|
|
86
86
|
@color_emphasize = :underline
|
|
87
|
+
@history = true
|
|
88
|
+
@history_file = File.join(Dir.home, '.sqlbible/history')
|
|
87
89
|
@lang = :en
|
|
88
90
|
@pager_command = 'less -FRSX'
|
|
89
91
|
@stat_level = 1
|
|
@@ -91,7 +93,7 @@ class Sqlbible
|
|
|
91
93
|
class << self
|
|
92
94
|
|
|
93
95
|
attr_reader :bibles_dir
|
|
94
|
-
attr_accessor :color, :color_reference, :
|
|
96
|
+
attr_accessor :bible, :color, :color_emphasize, :color_reference, :history, :history_file, :lang, :pager, :pager_command, :stat_level
|
|
95
97
|
|
|
96
98
|
# Get the database schema as string
|
|
97
99
|
def db_schema
|