piper-rb 0.3.3 → 0.4.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: 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
  - - ">="