owskilog 0.2.0 → 0.2.2

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: 6459bd8a1a6b903ad85aa8e403d7d7d260b0e43d
4
- data.tar.gz: 6e60ef11ca4e096f391bf26cf4fccccdf690d48e
3
+ metadata.gz: 2179acba77e13e5e5573c13c6d1fff8d7efbbaa5
4
+ data.tar.gz: a5acf17d817e99ea5490d3052f3fc4e06c24a178
5
5
  SHA512:
6
- metadata.gz: '091679cb43ce217108988d7120596115ba175ee16cceba90111b6aae9b35e5fbab63ea63c8ff2a8c6fbc49b0025f7aaca70d4a86ae33078b2b2a0095bd2f0f89'
7
- data.tar.gz: 917da3973713cc25f6353104fb53a8aa28b903e8a3b6aa605060ca25c205d79e8e047a408554ce3ee8987bfbb437dff9a99d02dab87757a8667ef2959ba5ba60
6
+ metadata.gz: 14b6be86ad04d3e9b3a95e4fd9a263c8baa63d1794a452f4d7c355f2842f2cb4e60dcc938ed546e767ed74fa854a64a67634d11b9e196da322fd880e9c9f166d
7
+ data.tar.gz: f7d2a3be83f31b3f7458f47e65b3f30a24a24f045e7d020c1a0912fb8b8f7a3a263945f5319ea61e931b90aee8b24c079c224821b2d4c1e0a0a732ef905a727b
data/README.md CHANGED
@@ -1,8 +1,6 @@
1
1
  # owskilog
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/owskilog`. To experiment with that code, run `bin/console` for an interactive prompt.
4
-
5
- TODO: Delete this and the text above, and describe your gem
3
+ Project created with the intention of helping managing scripts that need to constant log their actions and status.
6
4
 
7
5
  ## Installation
8
6
 
@@ -32,7 +30,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
32
30
 
33
31
  ## Contributing
34
32
 
35
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/owskilog. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
33
+ Bug reports and pull requests are welcome on GitHub at https://github.com/augustoccesar/owskilog. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
36
34
 
37
35
  ## License
38
36
 
@@ -40,4 +38,4 @@ The gem is available as open source under the terms of the [MIT License](http://
40
38
 
41
39
  ## Code of Conduct
42
40
 
43
- Everyone interacting in the owskilog project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/owskilog/blob/master/CODE_OF_CONDUCT.md).
41
+ Everyone interacting in the owskilog project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/augustoccesar/owskilog/blob/master/CODE_OF_CONDUCT.md).
data/lib/owskilog.rb CHANGED
@@ -1,25 +1,40 @@
1
1
  require 'owskilog/version'
2
+ require 'owskilog/watcher'
2
3
  require 'owskilog/event'
3
- require 'owskilog/event_manager'
4
4
 
5
5
  module OwskiLog
6
6
  class Holder
7
- include EventManager
8
- attr_accessor :events
7
+ attr_accessor :events, :watchers
9
8
 
10
9
  def initialize
11
10
  @events = Hash.new
11
+ @watchers = Array.new
12
12
  end
13
13
 
14
- def wrap(key, description, parent_key: nil, &block)
14
+ def register_event(key, description, parent_key: nil)
15
15
  ev = Event.new(key, description)
16
- register_event(@events, ev, parent_key: parent_key)
16
+ EventManager::register_event(@events, ev, parent_key: parent_key)
17
+ WatcherManager::trigger_watchers(@watchers, triggers: [:after_register, :all])
18
+ ev
19
+ end
20
+
21
+ def finish_event(key, status, cause: nil)
22
+ EventManager::finish_event(@events, key, status, cause: cause)
23
+ WatcherManager::trigger_watchers(@watchers, triggers: [:after_finish, :all])
24
+ end
25
+
26
+ def register_watcher(watcher)
27
+ WatcherManager::register_watcher(@watchers, watcher)
28
+ end
29
+
30
+ def wrap(key, description, parent_key: nil, &block)
31
+ ev = register_event(key, description, parent_key: parent_key)
17
32
  block.call(key)
18
33
  unless ev.is_finished?
19
- finish_event(@events, key, OwskiLog::Status::OK)
34
+ finish_event(key, OwskiLog::Status::OK)
20
35
  end
21
36
  rescue Exception => e
22
- finish_event(@events, key, OwskiLog::Status::ERROR, cause: e.inspect)
37
+ finish_event(key, OwskiLog::Status::ERROR, cause: e.inspect)
23
38
  end
24
39
 
25
40
  def get_log_structure
@@ -46,4 +46,30 @@ module OwskiLog
46
46
  }.to_json(*a)
47
47
  end
48
48
  end
49
+
50
+ module EventManager
51
+ def self.register_event(event_collection, event, parent_key: nil)
52
+ raise ArgumentError.new('You can only register OwskiLog::Event.') unless event.is_a? Event
53
+
54
+ if parent_key != nil
55
+ event.parent = find_event(event_collection,parent_key)
56
+ end
57
+
58
+ event_collection[event.key] = event
59
+ end
60
+
61
+ def self.find_event(event_collection, event_key)
62
+ event_collection[event_key]
63
+ end
64
+
65
+ def self.finish_event(event_collection, event_key, status, cause: nil)
66
+ ev = find_event(event_collection, event_key)
67
+ if ev
68
+ ev.finish(status, cause: cause)
69
+ if ev.parent != nil && cause != nil
70
+ ev.parent.finish(status, cause: cause)
71
+ end
72
+ end
73
+ end
74
+ end
49
75
  end
@@ -1,3 +1,3 @@
1
1
  module OwskiLog
2
- VERSION = '0.2.0'
2
+ VERSION = '0.2.2'
3
3
  end
@@ -0,0 +1,28 @@
1
+ module OwskiLog
2
+ class Watcher
3
+ TRIGGERS = [:all, :after_register, :after_finish]
4
+
5
+ attr_accessor :lambda, :trigger
6
+
7
+ def initialize(lambda, trigger: nil)
8
+ @lambda = lambda
9
+ @trigger = TRIGGERS.include?(trigger) ? trigger : :all
10
+ end
11
+ end
12
+
13
+ module WatcherManager
14
+ def self.register_watcher(watcher_collection, watcher)
15
+ raise ArgumentError.new('You can only register OwskiLog::Watcher.') unless watcher.is_a? Watcher
16
+
17
+ watcher_collection << watcher
18
+ end
19
+
20
+ def self.trigger_watchers(watcher_collection, triggers: nil)
21
+ if triggers
22
+ watcher_collection.select {|w| triggers.include?(w.trigger)}.each {|w| w.lambda.call}
23
+ else
24
+ watcher_collection.each {|w| w.lambda.call}
25
+ end
26
+ end
27
+ end
28
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: owskilog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Augusto César Freitas e Silva
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-07-07 00:00:00.000000000 Z
11
+ date: 2017-07-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -73,8 +73,8 @@ files:
73
73
  - exe/owskilog
74
74
  - lib/owskilog.rb
75
75
  - lib/owskilog/event.rb
76
- - lib/owskilog/event_manager.rb
77
76
  - lib/owskilog/version.rb
77
+ - lib/owskilog/watcher.rb
78
78
  - owskilog.gemspec
79
79
  homepage: https://github.com/augustoccesar/owskilog
80
80
  licenses:
@@ -1,27 +0,0 @@
1
- module OwskiLog
2
- module EventManager
3
- def register_event(event_collection, event, parent_key: nil)
4
- raise ArgumentError.new('You can only register owskilog::Event.') unless event.is_a? Event
5
-
6
- if parent_key != nil
7
- event.parent = find_event(event_collection,parent_key)
8
- end
9
-
10
- event_collection[event.key] = event
11
- end
12
-
13
- def find_event(event_collection, event_key)
14
- event_collection[event_key]
15
- end
16
-
17
- def finish_event(event_collection, event_key, status, cause: nil)
18
- ev = find_event(event_collection, event_key)
19
- if ev
20
- ev.finish(status, cause: cause)
21
- if ev.parent != nil && cause != nil
22
- ev.parent.finish(status, cause: cause)
23
- end
24
- end
25
- end
26
- end
27
- end