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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8fcc8ef3538d403411b6830fdff8f3ac9182e92e
4
- data.tar.gz: a4053d2ae44b83d05db2b1edf47c6349a24e2328
3
+ metadata.gz: a6893745a5c03bed50832d7c4e60cd820d1e9b0a
4
+ data.tar.gz: 44c458bfe50fa6033170fe4f454587ce772b531d
5
5
  SHA512:
6
- metadata.gz: 1614abe9d9fcd6ebba4597538ac9dd69176a9422ff664c7738f298c74438ec78cced76958a99df7b728e4d6001a86da4e76a7f1dbd01abba6fb5fd46204ac705
7
- data.tar.gz: 336ca614bb77901c93546adbfcc48c94f5b21c46ad5af68fd3177406bc3837b0b4330e844fb5d3329a26b8d6b20b46c80a59e4e98d252bee9163ae969b45f34d
6
+ metadata.gz: c417fe6c145614e607730ef5b6f5a92299f96958fd1a24219bd822c4d2b5d3fc7087e5bb4c4379c4ae367174042091ed35829584b42b8ec8ec3faefb40a80a95
7
+ data.tar.gz: 76bf01d6eae23be8b117e4797745b935b5ae904e881ba004a732c75ee0781e215fc9aeca4147aa7ca2a415be56f72e3c357bb4a638d97f0de68ee87329f66968
data/.gitignore CHANGED
@@ -11,4 +11,6 @@
11
11
  # rspec failure tracking
12
12
  .rspec_status
13
13
  .clomp-0.0.3.gem
14
- /*.gem
14
+ /*.gem
15
+ coverage
16
+ .byebug_history
data/Gemfile.lock CHANGED
@@ -1,13 +1,23 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- clomp (0.0.6)
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: 'Base Baba']
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: 'Base Baba']
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
@@ -7,7 +7,8 @@ module Clomp
7
7
  #
8
8
  def [](result = {}, options, _self:)
9
9
  result['tracks'].each do |track|
10
- next unless track.track?
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? && ((options[:pass_fast]) || Configuration.setup.pass_fast)
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? && ((options[:fail_fast]) || Configuration.setup.fail_fast)
27
+ break if _track.failure? && (_track.track_options[:fail_fast])
25
28
  end
26
29
 
27
30
  _self
@@ -26,7 +26,7 @@ module Clomp
26
26
  end
27
27
 
28
28
  def executed_tracks
29
- @executed.collect {|executed_track| [executed_track.name, executed_track.type, executed_track.state].join(":") }.join(" --> ")
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
- @result['tracks'].collect {|track| track.name if track.success?}.compact
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, :track, track_for: nil, &block)
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, :failed_track, track_for: nil, &block)
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, :finally, track_for: nil, &block)
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: track_type, track_for: track_for, &block]
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, :type
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: {}, track_type: VALID_TRACK_TYPES.first, track_from: nil, &block)
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
- @type
26
+ @right ? :right_track : :left_track
23
27
  end
24
28
 
25
- VALID_TRACK_TYPES.each do |track_type|
26
- define_method "#{track_type}?" do
27
- @type == track_type
28
- end
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 failure? && @block
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
@@ -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, track_type: track_type, track_from: track_for, &block)
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
@@ -1,3 +1,3 @@
1
1
  module Clomp
2
- VERSION = '0.0.7'
2
+ VERSION = '0.0.8'
3
3
  end
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.7
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-21 00:00:00.000000000 Z
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"
data/.byebug_history DELETED
@@ -1,7 +0,0 @@
1
- c
2
- x
3
- z
4
- c
5
- failure?
6
- n
7
- User.new