lite-command 1.1.0 → 1.3.1

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: 1832d3973ed0b408d8c4c11d6fb0e53ab9184080bc5eca37d99c69ec7a29c09c
4
- data.tar.gz: a7f5dc00b4b00587a8f4f9115637d02f69ad7218112b1a1b066a994e477be93d
3
+ metadata.gz: 3163e0a6a2f68ad290ec2f1a09b665d2be08c4d1874a11e53411ff75b23ba094
4
+ data.tar.gz: fec106d1db32c595c087b9ae8e04f777a02ed9e2cca34235d6c71ca8aedc47c2
5
5
  SHA512:
6
- metadata.gz: 235acc1478d53eeb81f16419a3c53eaa1ca743f472872508e433d4031b1a5fbc19f6a1cdee11d1fa7f35b44031ef8cd6d36510646e5c8cf58748f8866e365bd3
7
- data.tar.gz: eebb89a36eac24e2836c5742a78039c575bda0915696588da8cdbd1c0e4a40af976e6ab8412ab1e2d36790d422191aa2440f0d2fbdb3341b5c17d3679b32f8ac
6
+ metadata.gz: e823d8a5ecf0ed990c52f118026362aa259dee7229b381d677357036906b2f41151c2a70c62db83a18dd53b8971322777c93438329927e2258c09c33d37c8e2f
7
+ data.tar.gz: ad73ab2a6c69186ab2a6e2cf958ad6847b96bbd31641e4f77fbc0d3731c6b546e375da7b8b00eaa0cf3802e1e5898828094808efe86ce49b0cf68c8d8b549fe4
data/.rubocop.yml CHANGED
@@ -1,8 +1,9 @@
1
1
  require:
2
2
  - rubocop-performance
3
+ - rubocop-rake
3
4
  - rubocop-rspec
4
5
  AllCops:
5
- TargetRubyVersion: 2.7
6
+ TargetRubyVersion: 3.0
6
7
  NewCops: enable
7
8
  DisplayCopNames: true
8
9
  DisplayStyleGuide: true
@@ -35,6 +36,8 @@ RSpec/ExampleLength:
35
36
  Enabled: false
36
37
  RSpec/MultipleExpectations:
37
38
  Enabled: false
39
+ Style/ArgumentsForwarding:
40
+ Enabled: false
38
41
  Style/Documentation:
39
42
  Enabled: false
40
43
  Style/ExpandPathArguments:
data/CHANGELOG.md CHANGED
@@ -6,7 +6,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
- ## [1.1.0] - 2019-06-06
9
+ ## [1.3.1] - 2021-07-21
10
+ ### Changed
11
+ - Improved Railtie support
12
+
13
+ ## [1.3.0] - 2021-07-19
14
+ ### Added
15
+ - Added Ruby 3.0 support
16
+
17
+ ## [1.2.0] - 2021-02-04
18
+ ### Changed
19
+ - Add failed_steps to procedure
20
+
21
+ ## [1.1.1] - 2019-12-08
22
+ ### Changed
23
+ - Improve procedure error merging
24
+
25
+ ## [1.1.0] - 2019-12-06
10
26
  ### Added
11
27
  - Added procedure support for running multiple commands
12
28
 
data/Gemfile.lock CHANGED
@@ -1,66 +1,73 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- lite-command (1.1.0)
4
+ lite-command (1.3.1)
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.4)
12
+ actionview (= 6.1.4)
13
+ activesupport (= 6.1.4)
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.4)
19
+ activesupport (= 6.1.4)
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.4)
25
+ activesupport (= 6.1.4)
26
+ activerecord (6.1.4)
27
+ activemodel (= 6.1.4)
28
+ activesupport (= 6.1.4)
29
+ activesupport (6.1.4)
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.9)
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.1)
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)
43
- fasterer (0.8.3)
47
+ erubi (1.10.0)
48
+ fasterer (0.9.0)
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.10)
50
55
  concurrent-ruby (~> 1.0)
51
- lite-errors (1.0.1)
52
- lite-memoize (1.0.3)
53
- loofah (2.7.0)
56
+ lite-errors (1.2.0)
57
+ lite-memoize (1.1.0)
58
+ loofah (2.10.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.19.2)
62
- parser (2.7.2.0)
62
+ mini_portile2 (2.5.3)
63
+ minitest (5.14.4)
64
+ nokogiri (1.11.7)
65
+ mini_portile2 (~> 2.5.0)
66
+ racc (~> 1.4)
67
+ parallel (1.20.1)
68
+ parser (3.0.2.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.4)
80
+ actionpack (= 6.1.4)
81
+ activesupport (= 6.1.4)
75
82
  method_source
76
- rake (>= 0.8.7)
77
- thor (>= 0.20.3, < 2.0)
83
+ rake (>= 0.13)
84
+ thor (~> 1.0)
78
85
  rainbow (3.0.0)
79
- rake (13.0.1)
80
- regexp_parser (1.8.2)
81
- rexml (3.2.4)
86
+ rake (13.0.6)
87
+ regexp_parser (2.1.1)
88
+ rexml (3.2.5)
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.18.3)
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.7.0, < 2.0)
102
109
  ruby-progressbar (~> 1.7)
103
- unicode-display_width (>= 1.4.0, < 2.0)
104
- rubocop-ast (1.1.1)
105
- parser (>= 2.7.1.5)
106
- rubocop-performance (1.8.1)
107
- rubocop (>= 0.87.0)
110
+ unicode-display_width (>= 1.4.0, < 3.0)
111
+ rubocop-ast (1.8.0)
112
+ parser (>= 3.0.1.1)
113
+ rubocop-performance (1.11.4)
114
+ rubocop (>= 1.7.0, < 2.0)
108
115
  rubocop-ast (>= 0.4.0)
109
- rubocop-rspec (2.0.0)
116
+ rubocop-rake (0.6.0)
117
+ rubocop (~> 1.0)
118
+ rubocop-rspec (2.4.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)
114
- sexp_processor (~> 4.9)
115
- sexp_processor (4.15.1)
121
+ ruby-progressbar (1.11.0)
122
+ ruby_parser (3.16.0)
123
+ sexp_processor (~> 4.15, >= 4.15.1)
124
+ sexp_processor (4.15.3)
116
125
  sqlite3 (1.4.2)
117
- thor (1.0.1)
118
- thread_safe (0.3.6)
119
- tzinfo (1.2.7)
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.24
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
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'rails/generators'
4
-
5
3
  module Rails
6
4
  class CommandGenerator < Rails::Generators::NamedBase
7
5
 
data/lib/lite/command.rb CHANGED
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'generators/rails/command_generator' if defined?(Rails::Generators)
4
+
3
5
  require 'lite/command/version'
4
6
 
5
7
  %w[errors memoize propagation].each do |name|
@@ -9,5 +11,3 @@ end
9
11
  %w[exceptions states simple complex procedure].each do |name|
10
12
  require "lite/command/#{name}"
11
13
  end
12
-
13
- require 'generators/rails/command_generator'
@@ -6,22 +6,22 @@ module Lite
6
6
 
7
7
  class << self
8
8
 
9
- def call(*args)
10
- klass = new(*args)
9
+ def call(*args, **kwargs, &block)
10
+ klass = new(*args, **kwargs, &block)
11
11
  raise Lite::Command::NotImplementedError unless klass.respond_to?(:execute)
12
12
 
13
13
  klass.call
14
14
  klass
15
15
  end
16
16
 
17
- def execute(*args)
18
- klass = call(*args)
17
+ def execute(*args, **kwargs, &block)
18
+ klass = call(*args, **kwargs, &block)
19
19
  klass.result
20
20
  end
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,8 +9,8 @@ module Lite
9
9
 
10
10
  module ClassMethods
11
11
 
12
- def perform(*args)
13
- klass = call(*args)
12
+ def perform(*args, **kwargs, &block)
13
+ klass = call(*args, **kwargs, &block)
14
14
 
15
15
  if klass.success?
16
16
  yield(klass.result, Lite::Command::Success, Lite::Command::Failure)
@@ -9,11 +9,12 @@ 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
- if respond_to?(:errors) && command.respond_to?(:errors) && command.failure?
16
- merge_errors!(command)
15
+ if command.respond_to?(:errors) && command.failure?
16
+ failed_steps << failed_step(i, command)
17
+ merge_errors!(command) if respond_to?(:errors)
17
18
  break results if exit_on_failure?
18
19
  else
19
20
  results << command.result
@@ -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
@@ -6,10 +6,10 @@ module Lite
6
6
 
7
7
  class << self
8
8
 
9
- def call(*args)
9
+ def call(*args, **kwargs, &block)
10
10
  raise Lite::Command::NotImplementedError unless defined?(execute)
11
11
 
12
- execute(*args)
12
+ execute(*args, **kwargs, &block)
13
13
  end
14
14
 
15
15
  end
@@ -3,7 +3,7 @@
3
3
  module Lite
4
4
  module Command
5
5
 
6
- VERSION ||= '1.1.0'
6
+ VERSION = '1.3.1'
7
7
 
8
8
  end
9
9
  end
data/lite-command.gemspec CHANGED
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
25
25
  )
26
26
  else
27
27
  raise 'RubyGems 2.0 or newer is required to protect against ' \
28
- 'public gem pushes.'
28
+ 'public gem pushes.'
29
29
  end
30
30
 
31
31
  # Specify which files should be added to the gem when it is released.
@@ -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.0
4
+ version: 1.3.1
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-07 00:00:00.000000000 Z
11
+ date: 2021-07-22 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.24
252
266
  signing_key:
253
267
  specification_version: 4
254
268
  summary: Ruby Command based framework (aka service objects)