clomp 0.0.6 → 0.0.7
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/.byebug_history +5 -10
- data/Gemfile.lock +1 -1
- data/README.md +10 -0
- data/_config.yml +1 -0
- data/lib/clomp/executor.rb +14 -6
- data/lib/clomp/operation.rb +29 -8
- data/lib/clomp/result.rb +8 -0
- data/lib/clomp/track.rb +3 -5
- data/lib/clomp/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8fcc8ef3538d403411b6830fdff8f3ac9182e92e
|
4
|
+
data.tar.gz: a4053d2ae44b83d05db2b1edf47c6349a24e2328
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1614abe9d9fcd6ebba4597538ac9dd69176a9422ff664c7738f298c74438ec78cced76958a99df7b728e4d6001a86da4e76a7f1dbd01abba6fb5fd46204ac705
|
7
|
+
data.tar.gz: 336ca614bb77901c93546adbfcc48c94f5b21c46ad5af68fd3177406bc3837b0b4330e844fb5d3329a26b8d6b20b46c80a59e4e98d252bee9163ae969b45f34d
|
data/.byebug_history
CHANGED
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -85,6 +85,16 @@ end
|
|
85
85
|
@result.failure? # => false
|
86
86
|
```
|
87
87
|
|
88
|
+
Trace the steps:
|
89
|
+
```ruby
|
90
|
+
@result = SingingOperation[singer_name: 'Base Baba']
|
91
|
+
@result.executed_tracks
|
92
|
+
"first_track:track:success --> track_from_another_operation:track:success --> call_something:track:success"
|
93
|
+
|
94
|
+
@result.to_s
|
95
|
+
"Clomp::Result > Successful: first_track:track:success --> track_from_another_operation:track:success --> call_something:track:success"
|
96
|
+
```
|
97
|
+
|
88
98
|
## Configuration
|
89
99
|
You can set custom step name(s), custom fail, pass flow configuration globally and operation wise!
|
90
100
|
|
data/_config.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
theme: jekyll-theme-cayman
|
data/lib/clomp/executor.rb
CHANGED
@@ -3,19 +3,27 @@ require 'pp'
|
|
3
3
|
module Clomp
|
4
4
|
class Executor
|
5
5
|
class << self
|
6
|
-
|
6
|
+
# _self = operation
|
7
|
+
#
|
8
|
+
def [](result = {}, options, _self:)
|
7
9
|
result['tracks'].each do |track|
|
8
10
|
next unless track.track?
|
9
11
|
|
10
12
|
_callable_object = Callable[track, options, _self]
|
11
|
-
|
13
|
+
|
12
14
|
raise Errors::TrackNotDefined, "Please define the track in your operation/service: #{track.name} in #{_callable_object.class}" unless _callable_object.respond_to?(track.name)
|
13
|
-
|
15
|
+
|
14
16
|
_track = track.exec!(_callable_object, options)
|
15
|
-
|
16
|
-
|
17
|
+
|
18
|
+
_self.executed << _track
|
19
|
+
|
20
|
+
# Considering pass first on success state
|
21
|
+
break if _track.success? && ((options[:pass_fast]) || Configuration.setup.pass_fast)
|
22
|
+
|
23
|
+
# Consider both local or global configuration
|
24
|
+
break if _track.failure? && ((options[:fail_fast]) || Configuration.setup.fail_fast)
|
17
25
|
end
|
18
|
-
|
26
|
+
|
19
27
|
_self
|
20
28
|
end
|
21
29
|
end
|
data/lib/clomp/operation.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module Clomp
|
2
2
|
class Operation
|
3
|
-
attr_reader :result, :configs
|
3
|
+
attr_reader :result, :configs, :output, :executed
|
4
4
|
|
5
5
|
# Constructor for operation object
|
6
6
|
#
|
@@ -8,19 +8,27 @@ module Clomp
|
|
8
8
|
# @param options [Hash] of options to be provided by .[] call/method
|
9
9
|
# @return [self]
|
10
10
|
def initialize(track_builders: [], options: {}, exec: true)
|
11
|
-
@options
|
11
|
+
@options = {}
|
12
|
+
@options[:params] = options[:params]
|
13
|
+
@options.merge!(options[:immutable_data]) if options[:immutable_data]
|
12
14
|
# Setup result object!
|
13
15
|
@result = Result.new(
|
14
16
|
operation: self,
|
15
17
|
tracks: track_builders || [],
|
16
|
-
options: options || {}
|
18
|
+
options: @options || {}
|
17
19
|
)
|
18
20
|
|
19
|
-
@
|
21
|
+
@executed = []
|
22
|
+
@configs = self.class.setup_configuration
|
23
|
+
@output = get_status
|
20
24
|
|
21
25
|
exec_steps! if exec
|
22
26
|
end
|
23
27
|
|
28
|
+
def executed_tracks
|
29
|
+
@executed.collect {|executed_track| [executed_track.name, executed_track.type, executed_track.state].join(":") }.join(" --> ")
|
30
|
+
end
|
31
|
+
|
24
32
|
# Execute all the steps! Execute all the tracks!
|
25
33
|
def exec_steps!
|
26
34
|
Executor[result, @options, _self: self]
|
@@ -30,6 +38,19 @@ module Clomp
|
|
30
38
|
@result['tracks'].collect {|track| track.name if track.success?}.compact
|
31
39
|
end
|
32
40
|
|
41
|
+
# collect track status
|
42
|
+
def get_status
|
43
|
+
@result['tracks'].collect {|track| track.name if track.failure?}.compact.count.zero? ? 'Success' : 'Failure'
|
44
|
+
end
|
45
|
+
|
46
|
+
def failed
|
47
|
+
get_status == 'Failure'
|
48
|
+
end
|
49
|
+
|
50
|
+
def successful
|
51
|
+
get_status == 'Success'
|
52
|
+
end
|
53
|
+
|
33
54
|
# Name of the steps defined in the operation class
|
34
55
|
def steps
|
35
56
|
@result['tracks'].collect {|track| track.name}
|
@@ -62,12 +83,12 @@ module Clomp
|
|
62
83
|
# Share track from other operation
|
63
84
|
def share(track_name, from:, track_options: {}, &block)
|
64
85
|
@track_builders ||= []
|
65
|
-
|
86
|
+
|
66
87
|
_callable_class = from && from.kind_of?(String) ? Object.const_get(from) : from
|
67
88
|
|
68
89
|
raise UnknownOperation, 'Please provide a valid operation to share the steps for' unless _callable_class
|
69
90
|
|
70
|
-
@track_builders << build_track(track_name, track_options, :track, track_for: _callable_class
|
91
|
+
@track_builders << build_track(track_name, track_options, :track, track_for: _callable_class, &block)
|
71
92
|
end
|
72
93
|
|
73
94
|
# get track name and options!
|
@@ -90,7 +111,7 @@ module Clomp
|
|
90
111
|
# get the track name for the failure case!
|
91
112
|
def failure(track_name, track_options: {}, &block)
|
92
113
|
@track_builders ||= []
|
93
|
-
|
114
|
+
|
94
115
|
@track_builders << build_track(track_name, track_options, :failed_track, track_for: nil, &block)
|
95
116
|
end
|
96
117
|
|
@@ -105,7 +126,7 @@ module Clomp
|
|
105
126
|
new(
|
106
127
|
track_builders: @track_builders,
|
107
128
|
options: {
|
108
|
-
params:
|
129
|
+
params: mutable_data || {},
|
109
130
|
immutable_data: immutable_data || {}
|
110
131
|
},
|
111
132
|
).result
|
data/lib/clomp/result.rb
CHANGED
@@ -27,6 +27,14 @@ module Clomp
|
|
27
27
|
@state.(self[:tracks]) === false
|
28
28
|
end
|
29
29
|
|
30
|
+
def state_statement
|
31
|
+
success? ? 'Successful' : 'Failure'
|
32
|
+
end
|
33
|
+
|
34
|
+
def to_s
|
35
|
+
"#{self.class.name} > #{state_statement}: #{executed_tracks}"
|
36
|
+
end
|
37
|
+
|
30
38
|
def method_missing(method, *args)
|
31
39
|
if @operation.respond_to?(method)
|
32
40
|
@operation.send(method, *args)
|
data/lib/clomp/track.rb
CHANGED
@@ -2,7 +2,7 @@ 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, :type
|
6
6
|
|
7
7
|
VALID_TRACK_TYPES = %I(track failed_track finally catch)
|
8
8
|
|
@@ -28,10 +28,6 @@ module Clomp
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
-
def track?
|
32
|
-
@type == :track
|
33
|
-
end
|
34
|
-
|
35
31
|
# Track#exec! executes the steps defined in the operation class
|
36
32
|
def exec!(object, options)
|
37
33
|
mark_as_failure! # going to execute! set to failure initially
|
@@ -48,6 +44,8 @@ module Clomp
|
|
48
44
|
|
49
45
|
rescue => e
|
50
46
|
@error = e.message
|
47
|
+
|
48
|
+
mark_as_failure!
|
51
49
|
|
52
50
|
self
|
53
51
|
end
|
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.7
|
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-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -85,6 +85,7 @@ files:
|
|
85
85
|
- LICENSE.txt
|
86
86
|
- README.md
|
87
87
|
- Rakefile
|
88
|
+
- _config.yml
|
88
89
|
- bin/console
|
89
90
|
- bin/setup
|
90
91
|
- clomp.gemspec
|