clomp 0.0.7 → 0.0.8

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
  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