byebug 9.0.2 → 9.0.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 80b0070dd4542ad3a4b03b56cb55d340f6fff374
4
- data.tar.gz: 012595cd2ab1bbceb49884f387b58775c8c8b181
3
+ metadata.gz: 6d343499b9880b10f470260db66d852711470e61
4
+ data.tar.gz: c9003db4d4426203f8feadce35967527141e79e3
5
5
  SHA512:
6
- metadata.gz: 83b18f103aed1d6242b30f39d8b22c852a971b6892ae81d7660a8df51502d101c887211f13c5f74c1cc9bd25ba4a04c678e22de7ed463e205470acbeea3af0a3
7
- data.tar.gz: 4da42772a75c913e4c9270be8e9c24a663fbaac53f38542c6be93917e5995652a85811ba28175657ecb7edad59a4f3f659f8569ca00577eb4685dd1d7d5af9dd
6
+ metadata.gz: 0fdafc0ae02185a12ca220d091816ac7e99e9e54721d7f4a1132583025b68ebc4c5f69dcf71fa4510f3248a9c2e2944d1ad7d7b0d35126ff6cb0dbf01b5842f5
7
+ data.tar.gz: 54917e0fa06f438bd27f9bcb89a952ba04199460ec61120c86051c7338eaef0d64a8ff39436a75488769c046da7852b6e4c7be21d99bd9620bf9a46867806f6c
data/CHANGELOG.md CHANGED
@@ -2,6 +2,14 @@
2
2
 
3
3
  ## Master (Unreleased)
4
4
 
5
+ ## 9.0.3 - 2016-05-16
6
+
7
+ ### Fixed
8
+
9
+ * Unfriendly output in byebug's executable when no script specified (#256).
10
+ * Unfriendly output in byebug's executable when script doesn't exist.
11
+ * Unfriendly output in byebug's executable when script has invalid code.
12
+
5
13
  ## 9.0.2 - 2016-05-15
6
14
 
7
15
  ### Fixed
@@ -12,6 +20,8 @@
12
20
 
13
21
  ## 9.0.1 - 2016-05-14
14
22
 
23
+ ### Fixed
24
+
15
25
  * `quit` never exiting when remote debugging (#201).
16
26
 
17
27
  ## 9.0.0 - 2016-05-11
data/lib/byebug/runner.rb CHANGED
@@ -13,21 +13,6 @@ module Byebug
13
13
  class Runner
14
14
  include Helpers::ParseHelper
15
15
 
16
- #
17
- # Error class signaling absence of a script to debug.
18
- #
19
- class NoScript < StandardError; end
20
-
21
- #
22
- # Error class signaling a non existent script to debug.
23
- #
24
- class NonExistentScript < StandardError; end
25
-
26
- #
27
- # Error class signaling a script with invalid Ruby syntax.
28
- #
29
- class InvalidScript < StandardError; end
30
-
31
16
  #
32
17
  # Special working modes that don't actually start the debugger.
33
18
  #
@@ -63,7 +48,7 @@ module Byebug
63
48
  def help=(text)
64
49
  @help ||= text
65
50
 
66
- interface.puts("\n#{text}\n")
51
+ interface.puts("#{text}\n")
67
52
  end
68
53
 
69
54
  def version=(number)
@@ -74,6 +59,8 @@ module Byebug
74
59
 
75
60
  def remote=(host_and_port)
76
61
  @remote ||= Byebug.parse_host_and_port(host_and_port)
62
+
63
+ Byebug.start_client(*@remote)
77
64
  end
78
65
 
79
66
  def init_script
@@ -97,18 +84,11 @@ module Byebug
97
84
  # Starts byebug to debug a program.
98
85
  #
99
86
  def run
100
- prepare_options.order!($ARGV)
101
- return if version || help
102
-
103
- if remote
104
- Byebug.start_client(*remote)
105
- return
106
- end
87
+ option_parser.order!($ARGV)
88
+ return if non_script_option? || error_in_script?
107
89
 
108
90
  Byebug.run_init_script if init_script
109
91
 
110
- setup_cmd_line_args
111
-
112
92
  loop do
113
93
  debug_program
114
94
 
@@ -127,36 +107,70 @@ module Byebug
127
107
  #
128
108
  # Processes options passed from the command line.
129
109
  #
130
- def prepare_options
131
- OptionParser.new(banner, 25) do |opts|
110
+ def option_parser
111
+ @option_parser ||= OptionParser.new(banner, 25) do |opts|
132
112
  opts.banner = banner
133
113
 
134
114
  OptionSetter.new(self, opts).setup
135
115
  end
136
116
  end
137
117
 
118
+ #
119
+ # An option that doesn't need a script specified was given
120
+ #
121
+ def non_script_option?
122
+ version || help || remote
123
+ end
124
+
125
+ #
126
+ # There is an error with the specified script
127
+ #
128
+ def error_in_script?
129
+ no_script? || non_existing_script? || invalid_script?
130
+ end
131
+
132
+ #
133
+ # No script to debug specified
134
+ #
135
+ def no_script?
136
+ return false unless $ARGV.empty?
137
+
138
+ print_error('You must specify a program to debug')
139
+ true
140
+ end
141
+
138
142
  #
139
143
  # Extracts debugged program from command line args.
140
144
  #
141
- def setup_cmd_line_args
145
+ def non_existing_script?
142
146
  Byebug.mode = :standalone
143
147
 
144
- raise(NoScript, 'You must specify a program to debug...') if $ARGV.empty?
145
-
146
148
  program = which($ARGV.shift)
147
149
  program = which($ARGV.shift) if program == which('ruby')
148
- raise(NonExistentScript, "The script doesn't exist") unless program
149
150
 
150
- $PROGRAM_NAME = program
151
+ if program
152
+ $PROGRAM_NAME = program
153
+ false
154
+ else
155
+ print_error("The script doesn't exist")
156
+ true
157
+ end
158
+ end
159
+
160
+ #
161
+ # Checks the debugged script has correct syntax
162
+ #
163
+ def invalid_script?
164
+ return false if syntax_valid?(File.read($PROGRAM_NAME))
165
+
166
+ print_error('The script has incorrect syntax')
167
+ true
151
168
  end
152
169
 
153
170
  #
154
171
  # Debugs a script only if syntax checks okay.
155
172
  #
156
173
  def debug_program
157
- ok = syntax_valid?(File.read($PROGRAM_NAME))
158
- raise(InvalidScript, 'The script has incorrect syntax') unless ok
159
-
160
174
  error = Byebug.debug_load($PROGRAM_NAME, stop)
161
175
  puts "#{error}\n#{error.backtrace}" if error
162
176
  end
@@ -178,5 +192,13 @@ module Byebug
178
192
 
179
193
  nil
180
194
  end
195
+
196
+ #
197
+ # Prints an error message and a help string
198
+ #
199
+ def print_error(msg)
200
+ interface.errmsg(msg)
201
+ interface.puts(option_parser.help)
202
+ end
181
203
  end
182
204
  end
@@ -3,5 +3,5 @@
3
3
  # Reopen main module to define the library version
4
4
  #
5
5
  module Byebug
6
- VERSION = '9.0.2'.freeze
6
+ VERSION = '9.0.3'.freeze
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: byebug
3
3
  version: !ruby/object:Gem::Version
4
- version: 9.0.2
4
+ version: 9.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Rodriguez
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-05-15 00:00:00.000000000 Z
13
+ date: 2016-05-16 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler