piper-rb 0.3.3 → 0.4.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: bb530aeeea725f929c5dffe3f9d6726614350687214a413487f8925f58873fc8
4
- data.tar.gz: 3b4f766bfe4059ef296a481a74a6553d8c5b71a55bc2636de1cba1bca0d05d0f
3
+ metadata.gz: 187f1b8d52a186cffd6c89657c0521ef8f6c6e645b6d37d522c49ef4c89a5e8e
4
+ data.tar.gz: a33dcc6e4900a897d6b35bf9b4f11e1d0076e622d62568b4b5455d639c392ea8
5
5
  SHA512:
6
- metadata.gz: ea92942d3f7fc5c6a111ef838c0814956f0bd4b1ce766ac3371920c812b0530b46242ec7a0f1de6d26b6a9bc940cb303331e9e990bcd91fb6238b175143db937
7
- data.tar.gz: 71f6246f31efc8d6fbaa29015dd682b44168cf970cfae76e437918275ab731136d52f2b44a1c377ec406de2b3531804989d9c719988eb215bffbb1f2f069a8e3
6
+ metadata.gz: e564290a072a282ac5cef63e42b1fb9449968ecab94f72d6ad9112bba9c8c1e44295703a09e96679b36642ee60632e44385f24b1760470b74a41d6672907a453
7
+ data.tar.gz: be8b7f693a219e707a4f092b7d2dfff7cd7ef8288f52ea506c0a376d75a78cc0a07bde32f3a7a1796a85b5c57803f9394bbe82211614e3f4acdda7d1ec8a329c
data/.rubocop.yml CHANGED
@@ -3,7 +3,7 @@ require:
3
3
  - rubocop-rspec
4
4
 
5
5
  AllCops:
6
- TargetRubyVersion: 2.5
6
+ TargetRubyVersion: 2.6
7
7
 
8
8
  # METRICS
9
9
  MethodLength:
@@ -43,10 +43,15 @@ Style/FrozenStringLiteralComment:
43
43
  Enabled: false
44
44
  rubocop: warning
45
45
 
46
+ # NAMING
47
+ Naming/MemoizedInstanceVariableName:
48
+ Enabled: false
46
49
 
47
50
  # RSPEC
48
51
  RSpec/ContextWording:
49
52
  Enabled: false
53
+ RSpec/MultipleExpectations:
54
+ Max: 5
50
55
  RSpec/NamedSubject:
51
56
  Enabled: false
52
57
  RSpec/NestedGroups:
data/bin/piper CHANGED
@@ -109,7 +109,7 @@ private
109
109
  end
110
110
 
111
111
  def display_version
112
- say("Piper version #{PiperGem::VERSION}", [:white, :on_blue, :bold]) if verbose?
112
+ say("Piper version #{PiperGem::VERSION}", %i[white on_blue bold]) if verbose?
113
113
  end
114
114
 
115
115
  def display_log
data/lib/piper-rb.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # require "pry"
2
+
1
3
  require "piper/version"
2
4
  require "piper/piper_service"
3
5
  require "piper/string_helpers"
@@ -0,0 +1,60 @@
1
+ module PiperDSL
2
+ module PiperConfig
3
+ DEFAULT__PASS_NIL = false
4
+ DEFAULT__PASS_EXCEPTION = false
5
+
6
+ def self.included(base)
7
+ base.extend(ClassMethods)
8
+ end
9
+
10
+ module ClassMethods
11
+ def pass_nil(val)
12
+ @__pass_nil = val
13
+ end
14
+
15
+ def pass_nil?
16
+ @__pass_nil ||= if defined?(@__pass_nil)
17
+ @__pass_nil
18
+ elsif superclass < PiperService
19
+ superclass.pass_nil?
20
+ else
21
+ DEFAULT__PASS_NIL
22
+ end
23
+ end
24
+
25
+ def pass_exception(val)
26
+ @__pass_exception = val
27
+ end
28
+
29
+ def pass_exception?
30
+ @__pass_exception ||= if defined?(@__pass_exception)
31
+ @__pass_exception
32
+ elsif superclass < PiperService
33
+ superclass.pass_exception?
34
+ else
35
+ DEFAULT__PASS_EXCEPTION
36
+ end
37
+ end
38
+
39
+ def debug_steps
40
+ @__debug_steps = true
41
+ end
42
+
43
+ def debug_steps?
44
+ !@__debug_steps.nil?
45
+ end
46
+ end
47
+
48
+ def pass_nil?
49
+ self.class.pass_nil?
50
+ end
51
+
52
+ def pass_exception?
53
+ self.class.pass_exception?
54
+ end
55
+
56
+ def debug_steps?
57
+ self.class.debug_steps?
58
+ end
59
+ end
60
+ end
@@ -21,6 +21,8 @@ module PiperDSL
21
21
  return condition if condition.is_a? Dry::Monads::Result
22
22
 
23
23
  prepare_response!(condition)
24
+ rescue StandardError => e
25
+ pass_exception!(e)
24
26
  end
25
27
 
26
28
  protected
@@ -28,6 +30,8 @@ module PiperDSL
28
30
  def prepare_response!(condition)
29
31
  if condition
30
32
  Success(@result_object || true)
33
+ elsif condition.nil? && service.pass_nil?
34
+ Success(nil)
31
35
  else
32
36
  failure_object = { service: service, object: @fail_object, message: service.message }
33
37
  failure_object[:step] = @step_name if service.class.debug_steps?
@@ -35,5 +39,11 @@ module PiperDSL
35
39
  Failure(failure_object)
36
40
  end
37
41
  end
42
+
43
+ def pass_exception!(exception)
44
+ raise exception unless service.pass_exception?
45
+
46
+ Failure(service: service, object: exception, message: exception.message)
47
+ end
38
48
  end
39
49
  end
@@ -1,28 +1,15 @@
1
1
  module PiperDSL
2
2
  module PiperSteps
3
-
4
3
  module ClassMethods
5
4
  def service_steps
6
5
  @service_steps || @service_steps = []
7
6
  end
8
-
9
- def debug_steps
10
- @__debug_steps = true
11
- end
12
-
13
- def debug_steps?
14
- !@__debug_steps.nil?
15
- end
16
7
  end
17
8
 
18
9
  def self.included(base)
19
10
  base.extend(ClassMethods)
20
11
  end
21
12
 
22
- def debug_steps?
23
- self.class.debug_steps?
24
- end
25
-
26
13
  protected
27
14
 
28
15
  def perform_steps
@@ -30,11 +17,11 @@ module PiperDSL
30
17
 
31
18
  return Success(true) if klass.service_steps.empty?
32
19
 
33
- arr = klass.service_steps.dup
34
- step = arr.shift
20
+ steps_array = klass.service_steps.dup
21
+ step = steps_array.shift
35
22
 
36
23
  result = step.perform(self)
37
- result = result.bind(proc_step(arr.shift)) until arr.empty?
24
+ result = result.bind(proc_step(steps_array.shift)) until steps_array.empty?
38
25
  result
39
26
  end
40
27
 
@@ -2,11 +2,13 @@ require "dry-monads"
2
2
  require "dry-struct"
3
3
  require "dry-types"
4
4
 
5
+ require_relative "./dsl/piper_config"
6
+ require_relative "./dsl/piper_steps"
5
7
  require_relative "./dsl/piper_helpers"
6
8
  require_relative "./dsl/piper_pipe"
7
- require_relative "./dsl/piper_steps"
8
9
 
9
10
  class PiperService < Dry::Struct
11
+ include PiperDSL::PiperConfig
10
12
  include PiperDSL::PiperSteps
11
13
  include PiperDSL::PiperHelpers
12
14
  include Dry::Monads[:result]
@@ -1,2 +1,3 @@
1
1
  base_service: <%= base_service %>
2
2
  verbose: true
3
+ pass_nil: false
data/lib/piper/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module PiperGem
2
- VERSION = "0.3.3".freeze
2
+ VERSION = "0.4.0".freeze
3
3
  end
data/piper-rb.gemspec CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
23
23
 
24
24
  spec.executables = "piper"
25
25
 
26
- spec.required_ruby_version = ">= 2.5.0"
26
+ spec.required_ruby_version = ">= 2.6.5"
27
27
 
28
28
  spec.add_dependency "dry-monads", "~> 1.3"
29
29
  spec.add_dependency "dry-struct", "~> 1.1"
@@ -31,4 +31,8 @@ Gem::Specification.new do |spec|
31
31
  spec.add_dependency "thor", ">= 0.19", "<= 2.0"
32
32
 
33
33
  spec.add_development_dependency "rspec", "~> 3.9"
34
+ spec.add_development_dependency "rubocop", "~> 1.18"
35
+ spec.add_development_dependency "rubocop-performance", "~> 1.11"
36
+ spec.add_development_dependency "rubocop-rspec", "~> 2.4"
37
+ spec.add_development_dependency "pry", "~> 0.14"
34
38
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: piper-rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jakub Żuchowski
@@ -86,6 +86,62 @@ dependencies:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
88
  version: '3.9'
89
+ - !ruby/object:Gem::Dependency
90
+ name: rubocop
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '1.18'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '1.18'
103
+ - !ruby/object:Gem::Dependency
104
+ name: rubocop-performance
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '1.11'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '1.11'
117
+ - !ruby/object:Gem::Dependency
118
+ name: rubocop-rspec
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '2.4'
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: '2.4'
131
+ - !ruby/object:Gem::Dependency
132
+ name: pry
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: '0.14'
138
+ type: :development
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: '0.14'
89
145
  description:
90
146
  email: ellmo@ellmo.net
91
147
  executables:
@@ -102,6 +158,7 @@ files:
102
158
  - bin/piper
103
159
  - bin/runner/test_helpers.rb
104
160
  - lib/piper-rb.rb
161
+ - lib/piper/dsl/piper_config.rb
105
162
  - lib/piper/dsl/piper_helpers.rb
106
163
  - lib/piper/dsl/piper_pipe.rb
107
164
  - lib/piper/dsl/piper_steps.rb
@@ -128,7 +185,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
128
185
  requirements:
129
186
  - - ">="
130
187
  - !ruby/object:Gem::Version
131
- version: 2.5.0
188
+ version: 2.6.5
132
189
  required_rubygems_version: !ruby/object:Gem::Requirement
133
190
  requirements:
134
191
  - - ">="