lite-command 1.1.1 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: beadcca1b29f3daf78ef1b066fde11e3ec7906b1b077c1e1db69502ac1e3b11a
4
- data.tar.gz: ef3c8db30d607dd73b6c44775c79e7d9df06cc8c364a8bac763ce0fcc0a167d6
3
+ metadata.gz: 8276865933176a07427bd4a80d4d3bcdf256feb6eaccb7826853f66a5dabc3a0
4
+ data.tar.gz: 623626a014811b47eddc3a2adbe757444083c0d0ec98a5aad30b50a5b5b9e606
5
5
  SHA512:
6
- metadata.gz: 49b3733322873804f0ea4bc858ff8ca65f6be400338e1f4604d5dba313da8ee6aabc5361b07b1e28631e9a8802ecfa04cb730e472341fc863ae538e29561b484
7
- data.tar.gz: 0f2f7ff8d8d5bf9198763f6f3d33cf0bae77e43b32705060008bda68019a8759968c87d865d24939ddc956923216b41171e19acf52d4ce274c5a1307630f66f2
6
+ metadata.gz: b215647faddd4a9ffe954f4a439cfcc6cf59c60d5719541abe2b74c544e0eaee9a425833009eefc31c664e5c38f9d972e0e0e8490328d0612f2f357d7f21e81a
7
+ data.tar.gz: ce6049235be9c026c1ce070e22bb3dd5ca740bed64a15f5fc5f25f007b398aefa17de2e6118376bf6a437326735ee0ec384615b725e774f055818f2aa7d128fe
data/.rubocop.yml CHANGED
@@ -1,5 +1,6 @@
1
1
  require:
2
2
  - rubocop-performance
3
+ - rubocop-rake
3
4
  - rubocop-rspec
4
5
  AllCops:
5
6
  TargetRubyVersion: 2.7
data/CHANGELOG.md CHANGED
@@ -6,11 +6,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
- ## [1.1.1] - 2019-06-08
9
+ ## [1.2.0] - 2021-02-04
10
+ ### Changed
11
+ - Add failed_steps to procedure
12
+
13
+ ## [1.1.1] - 2019-12-08
10
14
  ### Changed
11
15
  - Improve procedure error merging
12
16
 
13
- ## [1.1.0] - 2019-06-06
17
+ ## [1.1.0] - 2019-12-06
14
18
  ### Added
15
19
  - Added procedure support for running multiple commands
16
20
 
data/Gemfile.lock CHANGED
@@ -1,66 +1,73 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- lite-command (1.1.1)
4
+ lite-command (1.2.0)
5
5
  lite-errors
6
6
  lite-memoize
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- actionpack (6.0.3.4)
12
- actionview (= 6.0.3.4)
13
- activesupport (= 6.0.3.4)
14
- rack (~> 2.0, >= 2.0.8)
11
+ actionpack (6.1.1)
12
+ actionview (= 6.1.1)
13
+ activesupport (= 6.1.1)
14
+ rack (~> 2.0, >= 2.0.9)
15
15
  rack-test (>= 0.6.3)
16
16
  rails-dom-testing (~> 2.0)
17
17
  rails-html-sanitizer (~> 1.0, >= 1.2.0)
18
- actionview (6.0.3.4)
19
- activesupport (= 6.0.3.4)
18
+ actionview (6.1.1)
19
+ activesupport (= 6.1.1)
20
20
  builder (~> 3.1)
21
21
  erubi (~> 1.4)
22
22
  rails-dom-testing (~> 2.0)
23
23
  rails-html-sanitizer (~> 1.1, >= 1.2.0)
24
- activemodel (6.0.3.4)
25
- activesupport (= 6.0.3.4)
26
- activerecord (6.0.3.4)
27
- activemodel (= 6.0.3.4)
28
- activesupport (= 6.0.3.4)
29
- activesupport (6.0.3.4)
24
+ activemodel (6.1.1)
25
+ activesupport (= 6.1.1)
26
+ activerecord (6.1.1)
27
+ activemodel (= 6.1.1)
28
+ activesupport (= 6.1.1)
29
+ activesupport (6.1.1)
30
30
  concurrent-ruby (~> 1.0, >= 1.0.2)
31
- i18n (>= 0.7, < 2)
32
- minitest (~> 5.1)
33
- tzinfo (~> 1.1)
34
- zeitwerk (~> 2.2, >= 2.2.2)
35
- ast (2.4.1)
31
+ i18n (>= 1.6, < 2)
32
+ minitest (>= 5.1)
33
+ tzinfo (~> 2.0)
34
+ zeitwerk (~> 2.3)
35
+ ast (2.4.2)
36
36
  builder (3.2.4)
37
37
  colorize (0.8.1)
38
- concurrent-ruby (1.1.7)
38
+ concurrent-ruby (1.1.8)
39
39
  crass (1.0.6)
40
- database_cleaner (1.8.5)
40
+ database_cleaner (2.0.1)
41
+ database_cleaner-active_record (~> 2.0.0)
42
+ database_cleaner-active_record (2.0.0)
43
+ activerecord (>= 5.a)
44
+ database_cleaner-core (~> 2.0.0)
45
+ database_cleaner-core (2.0.1)
41
46
  diff-lcs (1.4.4)
42
- erubi (1.9.0)
47
+ erubi (1.10.0)
43
48
  fasterer (0.8.3)
44
49
  colorize (~> 0.7)
45
50
  ruby_parser (>= 3.14.1)
46
51
  generator_spec (0.9.4)
47
52
  activesupport (>= 3.0.0)
48
53
  railties (>= 3.0.0)
49
- i18n (1.8.5)
54
+ i18n (1.8.8)
50
55
  concurrent-ruby (~> 1.0)
51
56
  lite-errors (1.0.1)
52
57
  lite-memoize (1.0.3)
53
- loofah (2.7.0)
58
+ loofah (2.9.0)
54
59
  crass (~> 1.0.2)
55
60
  nokogiri (>= 1.5.9)
56
61
  method_source (1.0.0)
57
- mini_portile2 (2.4.0)
58
- minitest (5.14.2)
59
- nokogiri (1.10.10)
60
- mini_portile2 (~> 2.4.0)
61
- parallel (1.20.0)
62
- parser (2.7.2.0)
62
+ mini_portile2 (2.5.0)
63
+ minitest (5.14.3)
64
+ nokogiri (1.11.1)
65
+ mini_portile2 (~> 2.5.0)
66
+ racc (~> 1.4)
67
+ parallel (1.20.1)
68
+ parser (3.0.0.0)
63
69
  ast (~> 2.4.1)
70
+ racc (1.5.2)
64
71
  rack (2.2.3)
65
72
  rack-test (1.1.0)
66
73
  rack (>= 1.0, < 3)
@@ -69,57 +76,58 @@ GEM
69
76
  nokogiri (>= 1.6)
70
77
  rails-html-sanitizer (1.3.0)
71
78
  loofah (~> 2.3)
72
- railties (6.0.3.4)
73
- actionpack (= 6.0.3.4)
74
- activesupport (= 6.0.3.4)
79
+ railties (6.1.1)
80
+ actionpack (= 6.1.1)
81
+ activesupport (= 6.1.1)
75
82
  method_source
76
83
  rake (>= 0.8.7)
77
- thor (>= 0.20.3, < 2.0)
84
+ thor (~> 1.0)
78
85
  rainbow (3.0.0)
79
- rake (13.0.1)
80
- regexp_parser (1.8.2)
86
+ rake (13.0.3)
87
+ regexp_parser (2.0.3)
81
88
  rexml (3.2.4)
82
89
  rspec (3.10.0)
83
90
  rspec-core (~> 3.10.0)
84
91
  rspec-expectations (~> 3.10.0)
85
92
  rspec-mocks (~> 3.10.0)
86
- rspec-core (3.10.0)
93
+ rspec-core (3.10.1)
87
94
  rspec-support (~> 3.10.0)
88
- rspec-expectations (3.10.0)
95
+ rspec-expectations (3.10.1)
89
96
  diff-lcs (>= 1.2.0, < 2.0)
90
97
  rspec-support (~> 3.10.0)
91
- rspec-mocks (3.10.0)
98
+ rspec-mocks (3.10.2)
92
99
  diff-lcs (>= 1.2.0, < 2.0)
93
100
  rspec-support (~> 3.10.0)
94
- rspec-support (3.10.0)
95
- rubocop (1.2.0)
101
+ rspec-support (3.10.2)
102
+ rubocop (1.9.1)
96
103
  parallel (~> 1.10)
97
- parser (>= 2.7.1.5)
104
+ parser (>= 3.0.0.0)
98
105
  rainbow (>= 2.2.2, < 4.0)
99
- regexp_parser (>= 1.8)
106
+ regexp_parser (>= 1.8, < 3.0)
100
107
  rexml
101
- rubocop-ast (>= 1.0.1)
108
+ rubocop-ast (>= 1.2.0, < 2.0)
102
109
  ruby-progressbar (~> 1.7)
103
- unicode-display_width (>= 1.4.0, < 2.0)
104
- rubocop-ast (1.1.1)
110
+ unicode-display_width (>= 1.4.0, < 3.0)
111
+ rubocop-ast (1.4.1)
105
112
  parser (>= 2.7.1.5)
106
- rubocop-performance (1.8.1)
107
- rubocop (>= 0.87.0)
113
+ rubocop-performance (1.9.2)
114
+ rubocop (>= 0.90.0, < 2.0)
108
115
  rubocop-ast (>= 0.4.0)
109
- rubocop-rspec (2.0.0)
116
+ rubocop-rake (0.5.1)
117
+ rubocop
118
+ rubocop-rspec (2.2.0)
110
119
  rubocop (~> 1.0)
111
120
  rubocop-ast (>= 1.1.0)
112
- ruby-progressbar (1.10.1)
113
- ruby_parser (3.15.0)
121
+ ruby-progressbar (1.11.0)
122
+ ruby_parser (3.15.1)
114
123
  sexp_processor (~> 4.9)
115
- sexp_processor (4.15.1)
124
+ sexp_processor (4.15.2)
116
125
  sqlite3 (1.4.2)
117
- thor (1.0.1)
118
- thread_safe (0.3.6)
119
- tzinfo (1.2.8)
120
- thread_safe (~> 0.1)
121
- unicode-display_width (1.7.0)
122
- zeitwerk (2.4.1)
126
+ thor (1.1.0)
127
+ tzinfo (2.0.4)
128
+ concurrent-ruby (~> 1.0)
129
+ unicode-display_width (2.0.0)
130
+ zeitwerk (2.4.2)
123
131
 
124
132
  PLATFORMS
125
133
  ruby
@@ -135,8 +143,9 @@ DEPENDENCIES
135
143
  rspec
136
144
  rubocop
137
145
  rubocop-performance
146
+ rubocop-rake
138
147
  rubocop-rspec
139
148
  sqlite3
140
149
 
141
150
  BUNDLED WITH
142
- 2.1.4
151
+ 2.2.8
data/README.md CHANGED
@@ -141,7 +141,7 @@ class SearchChannels < Lite::Command::Procedure; end
141
141
 
142
142
  procedure = SearchChannels.call(
143
143
  DisneyChannel.new,
144
- EspnChannel.new,
144
+ EspnChannel.new(current_station),
145
145
  MtvChannel.new
146
146
  )
147
147
 
@@ -151,13 +151,14 @@ procedure.steps #=> [<DisneyChannel @result="...">, <EspnChannel @result="..."
151
151
  # If the errors extension is added you can stop the procedure at first failure.
152
152
  procedure = SearchChannels.new(
153
153
  DisneyChannel.new,
154
- ErrorChannel.new,
154
+ ErrorChannel.new(current_station),
155
155
  MtvChannel.new
156
156
  )
157
157
 
158
158
  procedure.exit_on_failure = true
159
159
  procedure.call
160
160
  procedure.result #=> ['disney: #3']
161
+ procedure.failed_steps #=> [{ index: 1, step: 2, name: 'ErrorChannel', args: [current_station], errors: ['field error message'] }]
161
162
  ```
162
163
 
163
164
  ## Extensions
@@ -21,7 +21,7 @@ module Lite
21
21
 
22
22
  end
23
23
 
24
- attr_reader :result
24
+ attr_reader :args, :result
25
25
 
26
26
  def initialize(*args)
27
27
  @args = args
@@ -4,6 +4,7 @@ module Lite
4
4
  module Command
5
5
 
6
6
  class NotImplementedError < StandardError; end
7
+
7
8
  class ValidationError < StandardError; end
8
9
 
9
10
  end
@@ -9,10 +9,11 @@ module Lite
9
9
  attr_accessor :exit_on_failure
10
10
 
11
11
  def execute
12
- steps.each_with_object([]) do |command, results|
12
+ steps.each_with_object([]).with_index do |(command, results), i|
13
13
  command.call
14
14
 
15
15
  if command.respond_to?(:errors) && command.failure?
16
+ failed_steps << failed_step(i, command)
16
17
  merge_errors!(command) if respond_to?(:errors)
17
18
  break results if exit_on_failure?
18
19
  else
@@ -25,10 +26,26 @@ module Lite
25
26
  @exit_on_failure ||= false
26
27
  end
27
28
 
29
+ def failed_steps
30
+ @failed_steps ||= []
31
+ end
32
+
28
33
  def steps
29
34
  @steps ||= @args.flatten
30
35
  end
31
36
 
37
+ private
38
+
39
+ def failed_step(index, command)
40
+ {
41
+ index: index,
42
+ step: index + 1,
43
+ name: command.class.name,
44
+ args: command.args,
45
+ errors: command&.errors&.full_messages
46
+ }
47
+ end
48
+
32
49
  end
33
50
  end
34
51
  end
@@ -3,7 +3,7 @@
3
3
  module Lite
4
4
  module Command
5
5
 
6
- VERSION ||= '1.1.1'
6
+ VERSION = '1.2.0'
7
7
 
8
8
  end
9
9
  end
data/lite-command.gemspec CHANGED
@@ -49,6 +49,7 @@ Gem::Specification.new do |spec|
49
49
  spec.add_development_dependency 'rspec'
50
50
  spec.add_development_dependency 'rubocop'
51
51
  spec.add_development_dependency 'rubocop-performance'
52
+ spec.add_development_dependency 'rubocop-rake'
52
53
  spec.add_development_dependency 'rubocop-rspec'
53
54
  spec.add_development_dependency 'sqlite3'
54
55
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lite-command
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juan Gomez
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-11-08 00:00:00.000000000 Z
11
+ date: 2021-02-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lite-errors
@@ -164,6 +164,20 @@ dependencies:
164
164
  - - ">="
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: rubocop-rake
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
167
181
  - !ruby/object:Gem::Dependency
168
182
  name: rubocop-rspec
169
183
  requirement: !ruby/object:Gem::Requirement
@@ -248,7 +262,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
248
262
  - !ruby/object:Gem::Version
249
263
  version: '0'
250
264
  requirements: []
251
- rubygems_version: 3.1.4
265
+ rubygems_version: 3.2.8
252
266
  signing_key:
253
267
  specification_version: 4
254
268
  summary: Ruby Command based framework (aka service objects)