rb8-trepanning 0.1.5 → 0.1.6
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.
- data/CHANGES +18 -4
- data/ChangeLog +100 -87
- data/Makefile +23 -4
- data/README.textile +3 -3
- data/Rakefile +26 -20
- data/app/complete.rb +13 -13
- data/app/default.rb +8 -8
- data/app/display.rb +7 -7
- data/app/frame.rb +8 -8
- data/app/irb.rb +15 -15
- data/app/options.rb +25 -25
- data/app/run.rb +16 -8
- data/app/util.rb +7 -7
- data/bin/trepan8 +2 -2
- data/check-filter.rb +21 -0
- data/interface.rb +4 -4
- data/interface/user.rb +11 -11
- data/io.rb +18 -19
- data/io/input.rb +14 -12
- data/lib/debugger.rb +3 -1
- data/lib/trepanning.rb +30 -28
- data/processor.rb +41 -38
- data/processor/command.rb +9 -9
- data/processor/command/alias.rb +6 -6
- data/processor/command/down.rb +1 -2
- data/processor/command/edit.rb +12 -8
- data/processor/command/eval.rb +7 -7
- data/processor/command/info_subcmd/macro.rb +6 -6
- data/processor/command/info_subcmd/program.rb +5 -1
- data/processor/command/macro.rb +6 -6
- data/processor/command/show_subcmd/abbrev.rb +2 -2
- data/processor/command/up.rb +1 -2
- data/processor/complete.rb +120 -0
- data/processor/default.rb +13 -9
- data/processor/load_cmds.rb +18 -97
- data/processor/location.rb +34 -31
- data/processor/msg.rb +5 -5
- data/processor/validate.rb +44 -35
- data/test/data/break_loop_bug.right +2 -2
- data/test/data/edit.cmd +1 -1
- data/test/data/edit.right +7 -1
- data/test/data/printvar.right +2 -2
- data/test/data/raise.right +0 -1
- data/test/data/trace-mingw.right +28 -0
- data/test/integration/.gitignore +1 -0
- data/test/integration/test-raise.rb +10 -1
- data/test/integration/test-trace.rb +10 -6
- data/test/unit/test-app-options.rb +9 -3
- data/test/unit/test-app-run.rb +8 -1
- data/test/unit/test-cmd-alias.rb +2 -2
- data/test/unit/test-proc-default.rb +34 -0
- metadata +10 -6
data/app/complete.rb
CHANGED
@@ -12,21 +12,21 @@ module Trepan
|
|
12
12
|
def complete_token(complete_ary, prefix)
|
13
13
|
complete_ary.select { |cmd| cmd.to_s.start_with?(prefix) }.sort
|
14
14
|
end
|
15
|
-
|
15
|
+
|
16
16
|
def complete_token_with_next(complete_hash, prefix, cmd_prefix='')
|
17
17
|
result = []
|
18
|
-
complete_hash.each do |cmd_name, cmd_obj|
|
19
|
-
result << [cmd_name.to_s[cmd_prefix.size..-1], cmd_obj] if
|
18
|
+
complete_hash.each do |cmd_name, cmd_obj|
|
19
|
+
result << [cmd_name.to_s[cmd_prefix.size..-1], cmd_obj] if
|
20
20
|
cmd_name.to_s.start_with?(cmd_prefix + prefix)
|
21
21
|
end
|
22
22
|
result.sort{|a, b| a[0] <=> b[0]}
|
23
23
|
end
|
24
|
-
|
24
|
+
|
25
25
|
# Find all starting matches in Hash +aliases+ that start with +prefix+,
|
26
26
|
# but filter out any matches already in +expanded+.
|
27
27
|
def complete_token_filtered(aliases, prefix, expanded)
|
28
28
|
complete_ary = aliases.keys
|
29
|
-
complete_ary.select { |cmd|
|
29
|
+
complete_ary.select { |cmd|
|
30
30
|
cmd.to_s.start_with?(prefix) && ! expanded.member?(aliases[cmd])}.sort
|
31
31
|
end
|
32
32
|
|
@@ -37,31 +37,31 @@ module Trepan
|
|
37
37
|
complete_ary = aliases.keys
|
38
38
|
expanded_ary = expanded.keys
|
39
39
|
result = []
|
40
|
-
complete_ary.each do |cmd|
|
41
|
-
if cmd.to_s.start_with?(prefix) &&
|
40
|
+
complete_ary.each do |cmd|
|
41
|
+
if cmd.to_s.start_with?(prefix) &&
|
42
42
|
!expanded_ary.member?(aliases[cmd])
|
43
|
-
result << [cmd, commands[aliases[cmd]]]
|
43
|
+
result << [cmd, commands[aliases[cmd]]]
|
44
44
|
end
|
45
45
|
end
|
46
|
-
result
|
46
|
+
result.sort
|
47
47
|
end
|
48
48
|
|
49
49
|
# Find the next token in str string from start_pos, we return
|
50
|
-
# the token and the next blank position after the token or
|
50
|
+
# the token and the next blank position after the token or
|
51
51
|
# str.size if this is the last token. Tokens are delimited by
|
52
52
|
# white space.
|
53
53
|
def next_token(str, start_pos)
|
54
54
|
look_at = str[start_pos..-1]
|
55
55
|
next_nonblank_pos = start_pos + (look_at =~ /\S/ || 0)
|
56
|
-
next_blank_pos =
|
56
|
+
next_blank_pos =
|
57
57
|
if next_match = str[next_nonblank_pos..-1] =~ /\s/
|
58
|
-
next_nonblank_pos + next_match
|
58
|
+
next_nonblank_pos + next_match
|
59
59
|
else
|
60
60
|
str.size
|
61
61
|
end
|
62
62
|
return [next_blank_pos, str[next_nonblank_pos...next_blank_pos]]
|
63
63
|
end
|
64
|
-
|
64
|
+
|
65
65
|
end
|
66
66
|
end
|
67
67
|
|
data/app/default.rb
CHANGED
@@ -2,8 +2,8 @@
|
|
2
2
|
require 'rubygems'; require 'require_relative'
|
3
3
|
module Trepan
|
4
4
|
# Default options to Trepan.start
|
5
|
-
DEFAULT_START_SETTINGS = {
|
6
|
-
:init => true, # Set $0 and save ARGV?
|
5
|
+
DEFAULT_START_SETTINGS = {
|
6
|
+
:init => true, # Set $0 and save ARGV?
|
7
7
|
:post_mortem => false, # post-mortem debugging on uncaught exception?
|
8
8
|
:tracing => nil # Debugger.tracing value. true/false resets,
|
9
9
|
# nil keeps the prior value
|
@@ -14,10 +14,10 @@ module Trepan
|
|
14
14
|
|
15
15
|
# What file is used for debugger startup commands.
|
16
16
|
unless defined?(CMD_INITFILE_BASE)
|
17
|
-
CMD_INITFILE_BASE =
|
17
|
+
CMD_INITFILE_BASE =
|
18
18
|
if RUBY_PLATFORM =~ /mswin/
|
19
19
|
# Of course MS Windows has to be different
|
20
|
-
HOME_DIR = (ENV['HOME'] ||
|
20
|
+
HOME_DIR = (ENV['HOME'] ||
|
21
21
|
ENV['HOMEDRIVE'].to_s + ENV['HOMEPATH'].to_s).to_s
|
22
22
|
'trepan8.ini'
|
23
23
|
else
|
@@ -28,12 +28,12 @@ module Trepan
|
|
28
28
|
|
29
29
|
CMD_INITFILE = File.join(HOME_DIR, CMD_INITFILE_BASE) unless
|
30
30
|
defined?(CMD_INITFILE)
|
31
|
-
|
31
|
+
|
32
32
|
# Default settings for a Trepan class object
|
33
33
|
DEFAULT_SETTINGS = {
|
34
34
|
:cmdproc_opts => {}, # Default Trepan::CmdProcessor settings
|
35
35
|
:core_opts => {}, # Default Trepan::Core settings
|
36
|
-
:delete_restore => true, # Delete restore profile after reading?
|
36
|
+
:delete_restore => true, # Delete restore profile after reading?
|
37
37
|
:initial_dir => nil, # If --cd option was given, we save it here.
|
38
38
|
:nx => false, # Don't run user startup file (e.g. .trepanxrc)
|
39
39
|
:offset => 0, # skipping back +offset+ frames. This lets you start
|
@@ -42,7 +42,7 @@ module Trepan
|
|
42
42
|
# Default values used only when 'server' or 'client'
|
43
43
|
# (out-of-process debugging)
|
44
44
|
:port => 1955,
|
45
|
-
:host => 'localhost',
|
45
|
+
:host => 'localhost',
|
46
46
|
|
47
47
|
:restart_argv => [],
|
48
48
|
:server => false # Out-of-process debugging?
|
@@ -79,7 +79,7 @@ module Trepan
|
|
79
79
|
# If start_sentinal is set, it is a string to look for in caller()
|
80
80
|
# and is used to see if the call stack is truncated. Is also
|
81
81
|
# defined in lib/trepanning.rb
|
82
|
-
start_sentinal = nil;
|
82
|
+
start_sentinal = nil;
|
83
83
|
end
|
84
84
|
end
|
85
85
|
|
data/app/display.rb
CHANGED
@@ -13,14 +13,14 @@ end
|
|
13
13
|
|
14
14
|
# Manage a list of display expressions.
|
15
15
|
class DisplayMgr
|
16
|
-
|
16
|
+
|
17
17
|
def initialize
|
18
18
|
@next = 0
|
19
19
|
@list = []
|
20
20
|
end
|
21
|
-
|
21
|
+
|
22
22
|
def [](index)
|
23
|
-
raise TypeError,
|
23
|
+
raise TypeError,
|
24
24
|
"index #{index} should be a Fixnum, is #{index.class}" unless
|
25
25
|
index.is_a?(Fixnum)
|
26
26
|
@list.detect {|disp| disp.number == index }
|
@@ -108,7 +108,7 @@ class Display
|
|
108
108
|
attr_reader :number
|
109
109
|
attr_reader :signature
|
110
110
|
attr_accessor :enabled
|
111
|
-
|
111
|
+
|
112
112
|
def initialize(frame, arg, fmt, number)
|
113
113
|
@signature = display_signature(frame)
|
114
114
|
@fmt = fmt
|
@@ -135,7 +135,7 @@ class Display
|
|
135
135
|
|
136
136
|
def to_s(frame)
|
137
137
|
return 'No symbol "' + @arg + '" in current context.' unless frame
|
138
|
-
|
138
|
+
|
139
139
|
begin
|
140
140
|
val = eval(@arg, frame.binding)
|
141
141
|
rescue
|
@@ -148,7 +148,7 @@ class Display
|
|
148
148
|
# format display item
|
149
149
|
def format(show_enabled=true)
|
150
150
|
what = ''
|
151
|
-
what += @enabled ? ' y ' : ' n ' if
|
151
|
+
what += @enabled ? ' y ' : ' n ' if
|
152
152
|
show_enabled
|
153
153
|
what += (@fmt + ' ') if @fmt
|
154
154
|
what += @arg if @arg
|
@@ -167,7 +167,7 @@ if __FILE__ == $0
|
|
167
167
|
mgr.all.each {|line| puts line}
|
168
168
|
puts '=' * 40
|
169
169
|
end
|
170
|
-
|
170
|
+
|
171
171
|
frame = Debugger.current_context
|
172
172
|
|
173
173
|
x = 1
|
data/app/frame.rb
CHANGED
@@ -12,7 +12,7 @@ module Trepan
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def reset
|
15
|
-
@binding = @klass = @file = @line =
|
15
|
+
@binding = @klass = @file = @line =
|
16
16
|
@local_variables = @method_name = @thread = nil
|
17
17
|
end
|
18
18
|
|
@@ -42,19 +42,19 @@ module Trepan
|
|
42
42
|
if opts[:callstyle] == :tracked
|
43
43
|
arg_info = @context.frame_args_info(@index)
|
44
44
|
end
|
45
|
-
call_str << "#{klass}."
|
45
|
+
call_str << "#{klass}."
|
46
46
|
end
|
47
47
|
call_str << method_name
|
48
48
|
if args.any?
|
49
49
|
call_str << "("
|
50
50
|
args.each_with_index do |name, i|
|
51
|
-
case opts[:callstyle]
|
51
|
+
case opts[:callstyle]
|
52
52
|
when :short
|
53
53
|
call_str += "%s, " % [name]
|
54
54
|
when :last
|
55
55
|
klass = locals[name].class
|
56
56
|
if klass.inspect.size > 20+3
|
57
|
-
klass = klass.inspect[0..20]+"..."
|
57
|
+
klass = klass.inspect[0..20]+"..."
|
58
58
|
end
|
59
59
|
call_str += "%s#%s, " % [name, klass]
|
60
60
|
when :tracked
|
@@ -70,7 +70,7 @@ module Trepan
|
|
70
70
|
break
|
71
71
|
end
|
72
72
|
end
|
73
|
-
call_str[-2..-1] = ")" # Strip off trailing ', ' if any
|
73
|
+
call_str[-2..-1] = ")" # Strip off trailing ', ' if any
|
74
74
|
end
|
75
75
|
end
|
76
76
|
return call_str
|
@@ -149,12 +149,12 @@ if __FILE__ == $0
|
|
149
149
|
def foo(str, num)
|
150
150
|
x = 1
|
151
151
|
context = Debugger.current_context
|
152
|
-
Debugger.skip do
|
152
|
+
Debugger.skip do
|
153
153
|
0.upto(Debugger.current_context.stack_size-1) do |i|
|
154
154
|
frame = Trepan::Frame.new(context)
|
155
155
|
frame.index = i
|
156
|
-
puts "Frame #{i}: #{frame.file}, line #{frame.line}, " +
|
157
|
-
"class #{frame.klass}, thread: #{frame.thread}, " +
|
156
|
+
puts "Frame #{i}: #{frame.file}, line #{frame.line}, " +
|
157
|
+
"class #{frame.klass}, thread: #{frame.thread}, " +
|
158
158
|
"method: #{frame.method_name}"
|
159
159
|
p frame.local_variables
|
160
160
|
puts frame.describe(:maxwidth => 80, :callstyle=>:tracked)
|
data/app/irb.rb
CHANGED
@@ -3,49 +3,49 @@
|
|
3
3
|
require 'rubygems'; require 'require_relative'
|
4
4
|
require_relative 'util'
|
5
5
|
|
6
|
-
Trepan::Util.suppress_warnings {
|
6
|
+
Trepan::Util.suppress_warnings {
|
7
7
|
require 'irb'
|
8
8
|
}
|
9
9
|
|
10
10
|
module IRB # :nodoc:
|
11
11
|
module ExtendCommand # :nodoc:
|
12
|
-
# FIXME: should we read these out of a directory to
|
13
|
-
# make this more user-customizable?
|
12
|
+
# FIXME: should we read these out of a directory to
|
13
|
+
# make this more user-customizable?
|
14
14
|
|
15
15
|
unless defined? TContinue
|
16
16
|
|
17
17
|
# A base command class that resume execution
|
18
18
|
class TrepanResumeCommand
|
19
19
|
def self.execute(conf, *opts)
|
20
|
-
name =
|
20
|
+
name =
|
21
21
|
if self.name =~ /IRB::ExtendCommand::(\S+)/
|
22
22
|
$1[1..-1].downcase
|
23
23
|
else
|
24
24
|
'unknown'
|
25
25
|
end
|
26
26
|
$trepan_args = opts
|
27
|
-
$trepan_command =
|
28
|
-
if $trepan_irb_statements
|
27
|
+
$trepan_command =
|
28
|
+
if $trepan_irb_statements
|
29
29
|
$trepan_irb_statements
|
30
30
|
else
|
31
31
|
([name] + opts).join(' ')
|
32
32
|
end
|
33
|
-
|
33
|
+
|
34
34
|
throw :IRB_EXIT, name.to_sym
|
35
35
|
end
|
36
36
|
end
|
37
|
-
|
37
|
+
|
38
38
|
class TContinue < TrepanResumeCommand ; end
|
39
39
|
class TFinish < TrepanResumeCommand ; end
|
40
40
|
class TNext < TrepanResumeCommand ; end
|
41
41
|
class TQuit < TrepanResumeCommand ; end
|
42
42
|
class TStep < TrepanResumeCommand ; end
|
43
|
-
|
43
|
+
|
44
44
|
# Issues a comamnd to the debugger without continuing
|
45
|
-
# execution.
|
45
|
+
# execution.
|
46
46
|
class TDbgr
|
47
47
|
def self.execute(conf, *opts)
|
48
|
-
$trepan_command =
|
48
|
+
$trepan_command =
|
49
49
|
if opts.size == 1 && opts[0].is_a?(String)
|
50
50
|
$trepan_args = opts[0]
|
51
51
|
else
|
@@ -79,7 +79,7 @@ module IRB # :nodoc:
|
|
79
79
|
unless @__initialized
|
80
80
|
|
81
81
|
# Set to run the standard trepan IRB profile
|
82
|
-
irbrc = File.expand_path(File.join(File.dirname(__FILE__),
|
82
|
+
irbrc = File.expand_path(File.join(File.dirname(__FILE__),
|
83
83
|
%w(.. data irbrc)))
|
84
84
|
ENV['IRBRC'] = irbrc
|
85
85
|
|
@@ -87,7 +87,7 @@ module IRB # :nodoc:
|
|
87
87
|
ARGV.replace([])
|
88
88
|
IRB.setup(nil)
|
89
89
|
ARGV.replace(args)
|
90
|
-
|
90
|
+
|
91
91
|
# If the user has a IRB profile, run that now.
|
92
92
|
if ENV['TREPANX_IRB']
|
93
93
|
ENV['IRBRC'] = ENV['TREPANX_IRB']
|
@@ -97,7 +97,7 @@ module IRB # :nodoc:
|
|
97
97
|
|
98
98
|
@__initialized = true
|
99
99
|
end
|
100
|
-
|
100
|
+
|
101
101
|
workspace = WorkSpace.new(binding)
|
102
102
|
|
103
103
|
irb = Irb.new(workspace)
|
@@ -105,7 +105,7 @@ module IRB # :nodoc:
|
|
105
105
|
@CONF[:IRB_RC].call(irb.context) if @CONF[:IRB_RC]
|
106
106
|
@CONF[:MAIN_CONTEXT] = irb.context
|
107
107
|
conf.each {|k, v| @CONF[k] = v}
|
108
|
-
# A copy of this back_trace_limit is already active. How?
|
108
|
+
# A copy of this back_trace_limit is already active. How?
|
109
109
|
IRB.CurrentContext.back_trace_limit = @CONF[:BACK_TRACE_LIMIT]
|
110
110
|
|
111
111
|
catch(:IRB_EXIT) do
|
data/app/options.rb
CHANGED
@@ -2,14 +2,14 @@
|
|
2
2
|
# -*- coding: utf-8 -*-
|
3
3
|
# Copyright (C) 2010, 2011 Rocky Bernstein <rockyb@rubyforge.net>
|
4
4
|
#=== Summary
|
5
|
-
# Parses command-line options.
|
5
|
+
# Parses command-line options.
|
6
6
|
|
7
7
|
require 'optparse'
|
8
8
|
module Trepan
|
9
9
|
require 'rubygems'; require 'require_relative'
|
10
10
|
require_relative 'default'
|
11
11
|
|
12
|
-
VERSION = '0.1.
|
12
|
+
VERSION = '0.1.6' unless defined? Trepan::VERSION
|
13
13
|
PROGRAM = 'trepan8' unless defined? Trepan::PROGRAM
|
14
14
|
|
15
15
|
module_function
|
@@ -21,7 +21,7 @@ module Trepan
|
|
21
21
|
def copy_default_options
|
22
22
|
options = {}
|
23
23
|
DEFAULT_CMDLINE_SETTINGS.each do |key, value|
|
24
|
-
begin
|
24
|
+
begin
|
25
25
|
options[key] = value.clone
|
26
26
|
rescue TypeError
|
27
27
|
options[key] = value
|
@@ -46,8 +46,8 @@ EOB
|
|
46
46
|
options[:client] = true
|
47
47
|
end
|
48
48
|
end
|
49
|
-
opts.on('-c', '--command FILE', String,
|
50
|
-
'Execute debugger commands from FILE') do |cmdfile|
|
49
|
+
opts.on('-c', '--command FILE', String,
|
50
|
+
'Execute debugger commands from FILE') do |cmdfile|
|
51
51
|
if File.readable?(cmdfile)
|
52
52
|
options[:cmdfiles] << cmdfile
|
53
53
|
elsif File.exists?(cmdfile)
|
@@ -56,7 +56,7 @@ EOB
|
|
56
56
|
stderr.puts "Command file '#{cmdfile}' does not exist."
|
57
57
|
end
|
58
58
|
end
|
59
|
-
opts.on('--cd DIR', String, 'Change current directory to DIR') do |dir|
|
59
|
+
opts.on('--cd DIR', String, 'Change current directory to DIR') do |dir|
|
60
60
|
if File.directory?(dir)
|
61
61
|
if File.executable?(dir)
|
62
62
|
options[:chdir] = dir
|
@@ -67,14 +67,14 @@ EOB
|
|
67
67
|
stderr.puts "\"#{dir}\" is not a directory. Option --cd ignored."
|
68
68
|
end
|
69
69
|
end
|
70
|
-
opts.on('--basename',
|
71
|
-
'Show only file basename in file locations') do
|
70
|
+
opts.on('--basename',
|
71
|
+
'Show only file basename in file locations') do
|
72
72
|
options[:basename] = true
|
73
73
|
end
|
74
|
-
opts.on('-d', '--debug', 'Set $DEBUG=true') do
|
74
|
+
opts.on('-d', '--debug', 'Set $DEBUG=true') do
|
75
75
|
$DEBUG = true
|
76
76
|
end
|
77
|
-
opts.on('--cport PORT', Integer, 'Port used for control commands') do
|
77
|
+
opts.on('--cport PORT', Integer, 'Port used for control commands') do
|
78
78
|
|cport|
|
79
79
|
options[:cport] = cport
|
80
80
|
end
|
@@ -89,23 +89,23 @@ EOB
|
|
89
89
|
end
|
90
90
|
unless LineCache.respond_to?(:clear_file_format_cache)
|
91
91
|
stderr.puts "Your version of LineCache doesn't support terminal highlight"
|
92
|
-
options[:higlight] = false
|
92
|
+
options[:higlight] = false
|
93
93
|
end
|
94
94
|
end
|
95
95
|
end
|
96
|
-
opts.on('-h', '--host NAME', String,
|
97
|
-
'Host or IP used in TCP connections for --server or --client. ' +
|
98
|
-
"Default is #{DEFAULT_SETTINGS[:host].inspect}.") do
|
99
|
-
|name_or_ip|
|
96
|
+
opts.on('-h', '--host NAME', String,
|
97
|
+
'Host or IP used in TCP connections for --server or --client. ' +
|
98
|
+
"Default is #{DEFAULT_SETTINGS[:host].inspect}.") do
|
99
|
+
|name_or_ip|
|
100
100
|
options[:host] = name_or_ip
|
101
101
|
end
|
102
102
|
opts.on('-I', '--include PATH', String, 'Add PATH to $LOAD_PATH') do |path|
|
103
103
|
$LOAD_PATH.unshift(path)
|
104
104
|
end
|
105
|
-
opts.on('--keep-frame-binding', 'Keep frame bindings') do
|
105
|
+
opts.on('--keep-frame-binding', 'Keep frame bindings') do
|
106
106
|
options[:frame_bind] = true
|
107
107
|
end
|
108
|
-
opts.on('-m', '--post-mortem', 'Activate post-mortem mode') do
|
108
|
+
opts.on('-m', '--post-mortem', 'Activate post-mortem mode') do
|
109
109
|
options[:post_mortem] = true
|
110
110
|
end
|
111
111
|
opts.on('--nx',
|
@@ -115,10 +115,10 @@ EOB
|
|
115
115
|
opts.on('--[no-]control', 'Start [not] control thread') do |v|
|
116
116
|
options[:control] = v
|
117
117
|
end
|
118
|
-
opts.on('-p', '--port NUMBER', Integer,
|
119
|
-
'Port number used in TCP connections for --server or --client. ' +
|
120
|
-
"Default is #{DEFAULT_SETTINGS[:port]}.") do
|
121
|
-
|num|
|
118
|
+
opts.on('-p', '--port NUMBER', Integer,
|
119
|
+
'Port number used in TCP connections for --server or --client. ' +
|
120
|
+
"Default is #{DEFAULT_SETTINGS[:port]}.") do
|
121
|
+
|num|
|
122
122
|
options[:port] = num
|
123
123
|
end
|
124
124
|
opts.on('--[no-]quit', 'Do [not] quit when script finishes') do |v|
|
@@ -143,7 +143,7 @@ EOB
|
|
143
143
|
opts.on('--[no-]stop', 'Do not stop when script is loaded') do |v|
|
144
144
|
options[:stop] = v
|
145
145
|
end
|
146
|
-
opts.on('--script FILE', String, 'Name of the script file to run') do
|
146
|
+
opts.on('--script FILE', String, 'Name of the script file to run') do
|
147
147
|
|script|
|
148
148
|
options[:script] = script
|
149
149
|
unless File.exists?(options[:script])
|
@@ -162,7 +162,7 @@ EOB
|
|
162
162
|
opts.on('-w', '--wait', 'Wait for a client connection; implies -s option') do
|
163
163
|
options[:wait] = true
|
164
164
|
end
|
165
|
-
opts.on('-x', '--trace', 'Turn on line tracing') do
|
165
|
+
opts.on('-x', '--trace', 'Turn on line tracing') do
|
166
166
|
options[:traceprint] = true
|
167
167
|
options[:nx] = true
|
168
168
|
end
|
@@ -170,9 +170,9 @@ EOB
|
|
170
170
|
opts.on_tail('-?', '--help', 'Show this message') do
|
171
171
|
options[:help] = true
|
172
172
|
stdout.puts opts
|
173
|
-
exit
|
173
|
+
exit
|
174
174
|
end
|
175
|
-
opts.on_tail('-v', '--version',
|
175
|
+
opts.on_tail('-v', '--version',
|
176
176
|
'print the version') do
|
177
177
|
options[:version] = true
|
178
178
|
stdout.puts show_version
|