lite-command 1.1.1 → 1.2.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: 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)