simple_scripting 0.10.2 → 0.11.0

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
  SHA256:
3
- metadata.gz: d451df42fd6ecf5e2de7ec01680151cecaf8f7438fe38beecc20c8a096669c3c
4
- data.tar.gz: e295f1ff9885ce49834785c2c134aee3a85c5d26840a0234ab613d5041f7e4b9
3
+ metadata.gz: cc0247a6611c5316dad4d41f31b6127cf6bc7aaed615bcc271e548c11f272226
4
+ data.tar.gz: 3f6602c871caf6666caacfc001d47b6296be49e76c69f56e9903b0438a1fc38e
5
5
  SHA512:
6
- metadata.gz: 51e691d5371ae18047cda52434f84e3e87bee48f1aa3b6db9022287e066be389f32bc3a9e3a9249289755c9b206ee634550562e4231474ce99fb8087a588fa94
7
- data.tar.gz: 063a6e93572108e28a9228d8f06c121599dfc19dcbf031c2262fe4e18e22cfbbf1782acf60c1c8e2d2273aae05399b8264fce0bb094a2e04c98a12da0b137677
6
+ metadata.gz: '09293ef72e58432cfbb31d282f3ac86141e978dcacdc00a30203f621871bc72663c7566aaf344cb45cc8990ba6e65f1e5b7b401e09e1acc9c86bc0c6f42f05ec'
7
+ data.tar.gz: 024a82b8d6e483df5e679b549f17266e9c5e6d74cc25a46038484f5ac69b1534d7147ce2114f09f07589625d16f6ef51e1cfa41c12ea0655b40600d335aed1ad
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
- .ruby-gemset
2
- .ruby-version
3
- coverage/
1
+ /.ruby-gemset
2
+ /.ruby-version
3
+ /coverage/
4
+ /Gemfile.lock
@@ -44,6 +44,7 @@ module SimpleScripting
44
44
  long_help = options[:long_help]
45
45
  auto_help = options.fetch(:auto_help, true)
46
46
  output = options.fetch(:output, $stdout)
47
+ raise_errors = options.fetch(:raise_errors, false)
47
48
 
48
49
  # WATCH OUT! @long_help can also be set in :decode_command!. See issue #17.
49
50
  #
@@ -60,6 +61,12 @@ module SimpleScripting
60
61
  exit_data.print_help(output, @long_help)
61
62
 
62
63
  nil # to be used with the 'decode(...) || exit' pattern
64
+ rescue SimpleScripting::Argv::ArgumentError, SimpleScripting::Argv::InvalidCommand, OptionParser::InvalidOption => error
65
+ if raise_errors
66
+ raise
67
+ else
68
+ output.puts "Command error!: #{error.message}"
69
+ end
63
70
  ensure
64
71
  @long_help = nil
65
72
  end
@@ -1,5 +1,5 @@
1
1
  module SimpleScripting
2
2
 
3
- VERSION = "0.10.2"
3
+ VERSION = "0.11.0"
4
4
 
5
5
  end
@@ -10,7 +10,7 @@ Gem::Specification.new do |s|
10
10
  s.platform = Gem::Platform::RUBY
11
11
  s.required_ruby_version = '>= 2.3.0'
12
12
  s.authors = ["Saverio Miroddi"]
13
- s.date = "2019-01-15"
13
+ s.date = "2019-03-20"
14
14
  s.email = ["saverio.pub2@gmail.com"]
15
15
  s.homepage = "https://github.com/saveriomiroddi/simple_scripting"
16
16
  s.summary = "Library for simplifying some typical scripting functionalities."
@@ -67,7 +67,8 @@ describe SimpleScripting::Argv do
67
67
  it "should check all the options/arguments when --help is passed, raising an error when they're not correct" do
68
68
  decoder_params.last.merge!(
69
69
  arguments: ['--help'],
70
- auto_help: false
70
+ auto_help: false,
71
+ raise_errors: true,
71
72
  )
72
73
 
73
74
  decoding = -> { described_class.decode(*decoder_params) }
@@ -145,16 +146,35 @@ describe SimpleScripting::Argv do
145
146
 
146
147
  context "error handling" do
147
148
 
148
- it "should raise an error when mandatory arguments are missing" do
149
+ # All the other UTs use error raising, for convenience.
150
+ it "should print the error, with a previx, by default, instead of raising an error" do
149
151
  decoder_params.last[:arguments] = []
150
152
 
153
+ actual_result = described_class.decode(*decoder_params)
154
+
155
+ # Returning nil is an important specification, as it's part of the Argv protocol of doing
156
+ # so in case of problem/exit.
157
+ expect(actual_result).to be(nil)
158
+
159
+ expect(output_buffer.string).to eql("Command error!: Missing mandatory argument(s)\n")
160
+ end
161
+
162
+ it "should raise an error when mandatory arguments are missing" do
163
+ decoder_params.last.merge!(
164
+ arguments: [],
165
+ raise_errors: true,
166
+ )
167
+
151
168
  decoding = -> { described_class.decode(*decoder_params) }
152
169
 
153
170
  expect(decoding).to raise_error(SimpleScripting::Argv::ArgumentError, "Missing mandatory argument(s)")
154
171
  end
155
172
 
156
- it "should print an error and the help when there are too many arguments" do
157
- decoder_params.last[:arguments] = ['arg1', 'arg2', 'excessive_arg']
173
+ it "should raise an error when there are too many arguments" do
174
+ decoder_params.last.merge!(
175
+ arguments: ['arg1', 'arg2', 'excessive_arg'],
176
+ raise_errors: true,
177
+ )
158
178
 
159
179
  decoding = -> { described_class.decode(*decoder_params) }
160
180
 
@@ -219,7 +239,9 @@ describe SimpleScripting::Argv do
219
239
  arguments: [],
220
240
  ]}
221
241
 
222
- it "should exit when they are not specified" do
242
+ it "should raise an error when they are not specified" do
243
+ decoder_params.last[:raise_errors] = true
244
+
223
245
  decoding = -> { described_class.decode(*decoder_params) }
224
246
 
225
247
  expect(decoding).to raise_error(SimpleScripting::Argv::ArgumentError, "Missing mandatory argument(s)")
@@ -292,15 +314,21 @@ describe SimpleScripting::Argv do
292
314
  context "error handling" do
293
315
 
294
316
  it "should raise an error on invalid command" do
295
- decoder_params[:arguments] = ['pizza']
317
+ decoder_params.merge!(
318
+ arguments: ['pizza'],
319
+ raise_errors: true,
320
+ )
296
321
 
297
322
  decoding = -> { described_class.decode(decoder_params) }
298
323
 
299
324
  expect(decoding).to raise_error(SimpleScripting::Argv::InvalidCommand, "Invalid command: pizza")
300
325
  end
301
326
 
302
- it "should print a specific error message on missing command" do
303
- decoder_params[:arguments] = []
327
+ it "should raise a specific error message on missing command" do
328
+ decoder_params.merge!(
329
+ arguments: [],
330
+ raise_errors: true,
331
+ )
304
332
 
305
333
  decoding = -> { described_class.decode(decoder_params) }
306
334
 
@@ -458,6 +486,7 @@ describe SimpleScripting::Argv do
458
486
 
459
487
  it 'should avoid options being interpreted as definitions' do
460
488
  decoder_params[:arguments] = ['pizza']
489
+ decoder_params[:raise_errors] = true
461
490
 
462
491
  decoding = -> { described_class.decode(decoder_params) }
463
492
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_scripting
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.2
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Saverio Miroddi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-01-15 00:00:00.000000000 Z
11
+ date: 2019-03-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parseconfig
@@ -64,7 +64,6 @@ files:
64
64
  - ".simplecov"
65
65
  - ".travis.yml"
66
66
  - Gemfile
67
- - Gemfile.lock
68
67
  - LICENSE
69
68
  - README.md
70
69
  - Rakefile
@@ -101,7 +100,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
101
100
  version: '0'
102
101
  requirements: []
103
102
  rubyforge_project:
104
- rubygems_version: 2.7.6
103
+ rubygems_version: 2.7.8
105
104
  signing_key:
106
105
  specification_version: 4
107
106
  summary: Library for simplifying some typical scripting functionalities.
data/Gemfile.lock DELETED
@@ -1,74 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- simple_scripting (0.10.1)
5
- parseconfig (~> 1.0)
6
-
7
- GEM
8
- remote: https://rubygems.org/
9
- specs:
10
- ast (2.4.0)
11
- byebug (10.0.2)
12
- coveralls (0.8.21)
13
- json (>= 1.8, < 3)
14
- simplecov (~> 0.14.1)
15
- term-ansicolor (~> 1.3)
16
- thor (~> 0.19.4)
17
- tins (~> 1.6)
18
- diff-lcs (1.3)
19
- docile (1.1.5)
20
- jaro_winkler (1.5.1)
21
- json (2.1.0)
22
- parallel (1.12.1)
23
- parseconfig (1.0.8)
24
- parser (2.5.1.2)
25
- ast (~> 2.4.0)
26
- powerpack (0.1.2)
27
- rainbow (3.0.0)
28
- rake (12.0.0)
29
- rspec (3.7.0)
30
- rspec-core (~> 3.7.0)
31
- rspec-expectations (~> 3.7.0)
32
- rspec-mocks (~> 3.7.0)
33
- rspec-core (3.7.1)
34
- rspec-support (~> 3.7.0)
35
- rspec-expectations (3.7.0)
36
- diff-lcs (>= 1.2.0, < 2.0)
37
- rspec-support (~> 3.7.0)
38
- rspec-mocks (3.7.0)
39
- diff-lcs (>= 1.2.0, < 2.0)
40
- rspec-support (~> 3.7.0)
41
- rspec-support (3.7.1)
42
- rubocop (0.58.1)
43
- jaro_winkler (~> 1.5.1)
44
- parallel (~> 1.10)
45
- parser (>= 2.5, != 2.5.1.1)
46
- powerpack (~> 0.1)
47
- rainbow (>= 2.2.2, < 4.0)
48
- ruby-progressbar (~> 1.7)
49
- unicode-display_width (~> 1.0, >= 1.0.1)
50
- ruby-progressbar (1.9.0)
51
- simplecov (0.14.1)
52
- docile (~> 1.1.0)
53
- json (>= 1.8, < 3)
54
- simplecov-html (~> 0.10.0)
55
- simplecov-html (0.10.2)
56
- term-ansicolor (1.6.0)
57
- tins (~> 1.0)
58
- thor (0.19.4)
59
- tins (1.15.0)
60
- unicode-display_width (1.4.0)
61
-
62
- PLATFORMS
63
- ruby
64
-
65
- DEPENDENCIES
66
- byebug (~> 10.0.2)
67
- coveralls (~> 0.8.21)
68
- rake (~> 12.0)
69
- rspec (~> 3.7)
70
- rubocop (= 0.58.1)
71
- simple_scripting!
72
-
73
- BUNDLED WITH
74
- 1.16.1