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 +4 -4
- data/.rubocop.yml +6 -1
- data/bin/piper +1 -1
- data/lib/piper-rb.rb +2 -0
- data/lib/piper/dsl/piper_config.rb +60 -0
- data/lib/piper/dsl/piper_pipe.rb +10 -0
- data/lib/piper/dsl/piper_steps.rb +3 -16
- data/lib/piper/piper_service.rb +3 -1
- data/lib/piper/templates/.piper.yml.tt +1 -0
- data/lib/piper/version.rb +1 -1
- data/piper-rb.gemspec +5 -1
- metadata +59 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 187f1b8d52a186cffd6c89657c0521ef8f6c6e645b6d37d522c49ef4c89a5e8e
|
4
|
+
data.tar.gz: a33dcc6e4900a897d6b35bf9b4f11e1d0076e622d62568b4b5455d639c392ea8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
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
data/lib/piper-rb.rb
CHANGED
@@ -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
|
data/lib/piper/dsl/piper_pipe.rb
CHANGED
@@ -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
|
-
|
34
|
-
step
|
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(
|
24
|
+
result = result.bind(proc_step(steps_array.shift)) until steps_array.empty?
|
38
25
|
result
|
39
26
|
end
|
40
27
|
|
data/lib/piper/piper_service.rb
CHANGED
@@ -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]
|
data/lib/piper/version.rb
CHANGED
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
|
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.
|
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
|
188
|
+
version: 2.6.5
|
132
189
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
133
190
|
requirements:
|
134
191
|
- - ">="
|