clomp 0.0.7 → 0.0.8
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/.gitignore +3 -1
- data/Gemfile.lock +28 -1
- data/README.md +2 -2
- data/clomp.gemspec +3 -0
- data/lib/clomp/executor.rb +6 -3
- data/lib/clomp/operation.rb +15 -7
- data/lib/clomp/track.rb +22 -12
- data/lib/clomp/track_builder.rb +4 -2
- data/lib/clomp/version.rb +1 -1
- metadata +44 -3
- data/.byebug_history +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a6893745a5c03bed50832d7c4e60cd820d1e9b0a
|
4
|
+
data.tar.gz: 44c458bfe50fa6033170fe4f454587ce772b531d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c417fe6c145614e607730ef5b6f5a92299f96958fd1a24219bd822c4d2b5d3fc7087e5bb4c4379c4ae367174042091ed35829584b42b8ec8ec3faefb40a80a95
|
7
|
+
data.tar.gz: 76bf01d6eae23be8b117e4797745b935b5ae904e881ba004a732c75ee0781e215fc9aeca4147aa7ca2a415be56f72e3c357bb4a638d97f0de68ee87329f66968
|
data/.gitignore
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,13 +1,23 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
clomp (0.0.
|
4
|
+
clomp (0.0.7)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
|
+
ast (2.4.0)
|
9
10
|
byebug (9.1.0)
|
11
|
+
codeclimate-test-reporter (1.0.7)
|
12
|
+
simplecov
|
10
13
|
diff-lcs (1.3)
|
14
|
+
docile (1.1.5)
|
15
|
+
json (2.1.0)
|
16
|
+
parallel (1.12.1)
|
17
|
+
parser (2.4.0.2)
|
18
|
+
ast (~> 2.3)
|
19
|
+
powerpack (0.1.1)
|
20
|
+
rainbow (3.0.0)
|
11
21
|
rake (10.5.0)
|
12
22
|
rspec (3.7.0)
|
13
23
|
rspec-core (~> 3.7.0)
|
@@ -22,6 +32,20 @@ GEM
|
|
22
32
|
diff-lcs (>= 1.2.0, < 2.0)
|
23
33
|
rspec-support (~> 3.7.0)
|
24
34
|
rspec-support (3.7.0)
|
35
|
+
rubocop (0.52.1)
|
36
|
+
parallel (~> 1.10)
|
37
|
+
parser (>= 2.4.0.2, < 3.0)
|
38
|
+
powerpack (~> 0.1)
|
39
|
+
rainbow (>= 2.2.2, < 4.0)
|
40
|
+
ruby-progressbar (~> 1.7)
|
41
|
+
unicode-display_width (~> 1.0, >= 1.0.1)
|
42
|
+
ruby-progressbar (1.9.0)
|
43
|
+
simplecov (0.15.1)
|
44
|
+
docile (~> 1.1.0)
|
45
|
+
json (>= 1.8, < 3)
|
46
|
+
simplecov-html (~> 0.10.0)
|
47
|
+
simplecov-html (0.10.2)
|
48
|
+
unicode-display_width (1.3.0)
|
25
49
|
|
26
50
|
PLATFORMS
|
27
51
|
ruby
|
@@ -30,8 +54,11 @@ DEPENDENCIES
|
|
30
54
|
bundler (~> 1.16)
|
31
55
|
byebug
|
32
56
|
clomp!
|
57
|
+
codeclimate-test-reporter
|
33
58
|
rake (~> 10.0)
|
34
59
|
rspec
|
60
|
+
rubocop
|
61
|
+
simplecov
|
35
62
|
|
36
63
|
BUNDLED WITH
|
37
64
|
1.16.0
|
data/README.md
CHANGED
@@ -80,14 +80,14 @@ end
|
|
80
80
|
```
|
81
81
|
|
82
82
|
```ruby
|
83
|
-
@result = SingingOperation[singer_name: '
|
83
|
+
@result = SingingOperation[singer_name: 'Bass Baba']
|
84
84
|
@result.success? # => true
|
85
85
|
@result.failure? # => false
|
86
86
|
```
|
87
87
|
|
88
88
|
Trace the steps:
|
89
89
|
```ruby
|
90
|
-
@result = SingingOperation[singer_name: '
|
90
|
+
@result = SingingOperation[singer_name: 'Bass Baba']
|
91
91
|
@result.executed_tracks
|
92
92
|
"first_track:track:success --> track_from_another_operation:track:success --> call_something:track:success"
|
93
93
|
|
data/clomp.gemspec
CHANGED
@@ -25,4 +25,7 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.add_development_dependency "rake", "~> 10.0"
|
26
26
|
spec.add_development_dependency "rspec"
|
27
27
|
spec.add_development_dependency "byebug"
|
28
|
+
spec.add_development_dependency "simplecov"
|
29
|
+
spec.add_development_dependency "codeclimate-test-reporter"
|
30
|
+
spec.add_development_dependency "rubocop"
|
28
31
|
end
|
data/lib/clomp/executor.rb
CHANGED
@@ -7,7 +7,8 @@ module Clomp
|
|
7
7
|
#
|
8
8
|
def [](result = {}, options, _self:)
|
9
9
|
result['tracks'].each do |track|
|
10
|
-
next
|
10
|
+
next if _self.successful? && track.left_track?
|
11
|
+
next if _self.failed? && track.right_track?
|
11
12
|
|
12
13
|
_callable_object = Callable[track, options, _self]
|
13
14
|
|
@@ -17,11 +18,13 @@ module Clomp
|
|
17
18
|
|
18
19
|
_self.executed << _track
|
19
20
|
|
21
|
+
_track.executed = true
|
22
|
+
|
20
23
|
# Considering pass first on success state
|
21
|
-
break if _track.success? && (
|
24
|
+
break if _track.success? && (_track.track_options[:pass_fast])
|
22
25
|
|
23
26
|
# Consider both local or global configuration
|
24
|
-
break if _track.failure? && (
|
27
|
+
break if _track.failure? && (_track.track_options[:fail_fast])
|
25
28
|
end
|
26
29
|
|
27
30
|
_self
|
data/lib/clomp/operation.rb
CHANGED
@@ -26,7 +26,7 @@ module Clomp
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def executed_tracks
|
29
|
-
|
29
|
+
executed_track_list.collect {|executed_track| [executed_track.name, executed_track.type, executed_track.state].join(":") }.join(" --> ")
|
30
30
|
end
|
31
31
|
|
32
32
|
# Execute all the steps! Execute all the tracks!
|
@@ -34,8 +34,12 @@ module Clomp
|
|
34
34
|
Executor[result, @options, _self: self]
|
35
35
|
end
|
36
36
|
|
37
|
+
def executed_track_list
|
38
|
+
@result['tracks'].collect {|track| track if track.executed? }.compact
|
39
|
+
end
|
40
|
+
|
37
41
|
def executed_steps
|
38
|
-
|
42
|
+
executed_track_list.collect {|track| track.name }.compact
|
39
43
|
end
|
40
44
|
|
41
45
|
# collect track status
|
@@ -46,11 +50,15 @@ module Clomp
|
|
46
50
|
def failed
|
47
51
|
get_status == 'Failure'
|
48
52
|
end
|
49
|
-
|
53
|
+
|
54
|
+
alias_method :failed?, :failed
|
55
|
+
|
50
56
|
def successful
|
51
57
|
get_status == 'Success'
|
52
58
|
end
|
53
59
|
|
60
|
+
alias_method :successful?, :successful
|
61
|
+
|
54
62
|
# Name of the steps defined in the operation class
|
55
63
|
def steps
|
56
64
|
@result['tracks'].collect {|track| track.name}
|
@@ -95,7 +103,7 @@ module Clomp
|
|
95
103
|
def track(track_name, track_options: {}, &block)
|
96
104
|
@track_builders ||= []
|
97
105
|
|
98
|
-
@track_builders << build_track(track_name, track_options,
|
106
|
+
@track_builders << build_track(track_name, track_options, true, track_for: nil, &block)
|
99
107
|
end
|
100
108
|
|
101
109
|
alias_method :set, :track
|
@@ -112,14 +120,14 @@ module Clomp
|
|
112
120
|
def failure(track_name, track_options: {}, &block)
|
113
121
|
@track_builders ||= []
|
114
122
|
|
115
|
-
@track_builders << build_track(track_name, track_options,
|
123
|
+
@track_builders << build_track(track_name, track_options, false, track_for: nil, &block)
|
116
124
|
end
|
117
125
|
|
118
126
|
# get the track name for the final step! Only one step will be executed!
|
119
127
|
def finally(track_name, track_options: {}, &block)
|
120
128
|
@track_builders ||= []
|
121
129
|
|
122
|
-
@track_builders << build_track(track_name, track_options,
|
130
|
+
@track_builders << build_track(track_name, track_options, true, track_for: nil, &block)
|
123
131
|
end
|
124
132
|
|
125
133
|
def call(mutable_data = {}, immutable_data = {})
|
@@ -139,7 +147,7 @@ module Clomp
|
|
139
147
|
def build_track(track_name, track_options = {}, track_type, track_for: nil, &block)
|
140
148
|
@configs ||= Configuration.new
|
141
149
|
|
142
|
-
TrackBuilder[track_name: track_name, track_options: track_options, track_type:
|
150
|
+
TrackBuilder[track_name: track_name, track_options: track_options, track_type: true, track_for: track_for, &block]
|
143
151
|
end
|
144
152
|
end
|
145
153
|
end
|
data/lib/clomp/track.rb
CHANGED
@@ -2,30 +2,38 @@ module Clomp
|
|
2
2
|
class Track
|
3
3
|
include Clomp::CommonStates
|
4
4
|
|
5
|
-
attr_reader :name, :block, :track_options, :state, :error, :track_from, :
|
5
|
+
attr_reader :name, :block, :track_options, :state, :error, :track_from, :left, :right
|
6
|
+
attr_accessor :executed
|
6
7
|
|
7
8
|
VALID_TRACK_TYPES = %I(track failed_track finally catch)
|
8
9
|
|
9
|
-
def initialize(name: (raise Errors::NoTrackProvided), track_options: {},
|
10
|
-
raise UnknownTrackType, 'Please provide a valid track type' unless VALID_TRACK_TYPES.include?(track_type)
|
11
|
-
|
10
|
+
def initialize(name: (raise Errors::NoTrackProvided), track_options: {}, right: true, track_from: nil, &block)
|
12
11
|
@name = name
|
13
12
|
@track_from = track_from
|
14
13
|
@block = block
|
15
14
|
@track_options = track_options
|
16
|
-
@type = track_type
|
17
15
|
@state = 'pending'
|
18
16
|
@error = nil
|
17
|
+
@right = true
|
18
|
+
@executed = false
|
19
|
+
end
|
20
|
+
|
21
|
+
def executed?
|
22
|
+
@executed == true
|
19
23
|
end
|
20
24
|
|
21
25
|
def type
|
22
|
-
@
|
26
|
+
@right ? :right_track : :left_track
|
23
27
|
end
|
24
28
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
+
alias_method :track?, :type
|
30
|
+
|
31
|
+
def left_track?
|
32
|
+
!right_track?
|
33
|
+
end
|
34
|
+
|
35
|
+
def right_track?
|
36
|
+
@right
|
29
37
|
end
|
30
38
|
|
31
39
|
# Track#exec! executes the steps defined in the operation class
|
@@ -38,13 +46,15 @@ module Clomp
|
|
38
46
|
mark_as_success! if object.public_send(name.to_sym, options) != false
|
39
47
|
end
|
40
48
|
|
41
|
-
@block.(options) if
|
49
|
+
@block.(options) if success? && @block
|
42
50
|
|
43
51
|
self
|
44
52
|
|
45
53
|
rescue => e
|
46
54
|
@error = e.message
|
47
|
-
|
55
|
+
|
56
|
+
pp @error
|
57
|
+
|
48
58
|
mark_as_failure!
|
49
59
|
|
50
60
|
self
|
data/lib/clomp/track_builder.rb
CHANGED
@@ -2,8 +2,10 @@ module Clomp
|
|
2
2
|
class TrackBuilder < Array
|
3
3
|
class << self
|
4
4
|
def [](track_name:, track_options: {}, track_for: nil, track_type:, &block)
|
5
|
-
Track.new(name: track_name, track_options: track_options,
|
5
|
+
Track.new(name: track_name, track_options: track_options, right: track_type, track_from: track_for, &block)
|
6
6
|
end
|
7
7
|
end
|
8
8
|
end
|
9
|
-
end
|
9
|
+
end
|
10
|
+
|
11
|
+
# 9dd796f8b50c23addaf020473df0c0430c3f37f4a8383459106eb1d72401433e
|
data/lib/clomp/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: clomp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Irfan Ahmed
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-01-
|
11
|
+
date: 2018-01-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -66,6 +66,48 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: simplecov
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: codeclimate-test-reporter
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rubocop
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
69
111
|
description: Clomp gem provides a smooth, lightweight, productive and reusable way
|
70
112
|
to build an operation using Railway Oriented Programing paradigm.
|
71
113
|
email:
|
@@ -75,7 +117,6 @@ executables: []
|
|
75
117
|
extensions: []
|
76
118
|
extra_rdoc_files: []
|
77
119
|
files:
|
78
|
-
- ".byebug_history"
|
79
120
|
- ".gitignore"
|
80
121
|
- ".rspec"
|
81
122
|
- ".travis.yml"
|