omg_pull_request 0.4.0 → 0.5.0

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.
@@ -37,15 +37,6 @@ module OmgPullRequest
37
37
  file
38
38
  end
39
39
 
40
- def plugins
41
- return @plugins if @plugins
42
- p = self.config['plugins'] || ''
43
-
44
- @plugins = p.split(',').map(&:constantize).collect do |klass|
45
- klass.new({ :options => config }.with_indifferent_access)
46
- end
47
- end
48
-
49
40
  def omg_dir
50
41
  File.join(local_repo, '.omgprrc')
51
42
  end
@@ -24,7 +24,6 @@ module OmgPullRequest
24
24
  closed
25
25
  end
26
26
 
27
-
28
27
  private
29
28
 
30
29
  def ran_hash
@@ -0,0 +1,37 @@
1
+ require 'singleton'
2
+
3
+ module OmgPullRequest
4
+ class Plugin
5
+ def self.initialize(&block)
6
+ ActiveSupport::Notifications.subscribe("omgpr:initialize") do |*args|
7
+ event = ActiveSupport::Notifications::Event.new(*args)
8
+ block.call(event.payload)
9
+ end
10
+ end
11
+
12
+ def self.subscribe(method, &block)
13
+ ActiveSupport::Notifications.subscribe("omgpr:#{method}") do |*args|
14
+ event = ActiveSupport::Notifications::Event.new(*args)
15
+ block.call(event.payload)
16
+ end
17
+ end
18
+
19
+ def self.instrument(event, args)
20
+ Plugin::Instrumenter.instance.instrument(event, args)
21
+ end
22
+
23
+ class Instrumenter
24
+ include Singleton
25
+
26
+ def initialize
27
+ Plugin.initialize do |attributes|
28
+ @attributes = attributes
29
+ end
30
+ end
31
+
32
+ def instrument(event, args)
33
+ ActiveSupport::Notifications.instrument("omgpr:#{event}", (@attributes || {}).merge(args))
34
+ end
35
+ end
36
+ end
37
+ end
@@ -1,4 +1,5 @@
1
1
  module OmgPullRequest
2
+
2
3
  module TestRunner
3
4
 
4
5
  def self.start_daemon(configuration=Configuration.new, daemonize=true)
@@ -11,23 +12,19 @@ module OmgPullRequest
11
12
  :github_wrapper => github_wrapper
12
13
  )
13
14
 
14
- plugins = configuration.plugins
15
+ Plugin.instrument("initialize",
16
+ :configuration => configuration,
17
+ :github_wrapper => github_wrapper
18
+ )
15
19
 
16
20
  while(true)
17
21
  begin
18
- pull_requests = github_wrapper.pull_requests
19
- closed_requests = CONTEXT.get_recently_closed(pull_requests)
20
- closed_requests.each do |closed|
22
+ pull_requests = github_wrapper.pull_requests
23
+
24
+ CONTEXT.get_recently_closed(pull_requests).each do |closed|
21
25
  pr = github_wrapper.find_pull_request(closed)
22
- merged = pr.merged
23
-
24
- plugins.each do |plugin|
25
- if merged && plugin.respond_to?(:pull_request_merged)
26
- plugin.pull_request_merged(pr)
27
- elsif !merged && plugin.respond_to?(:pull_request_closed)
28
- plugin.pull_request_closed(pr)
29
- end
30
- end
26
+ event = pr.merged ? 'merged' : 'closed'
27
+ Plugin.instrument(event, :pull_request => pr)
31
28
  end
32
29
 
33
30
  pull_requests.each do |pr|
@@ -39,13 +36,8 @@ module OmgPullRequest
39
36
  )
40
37
  next if CONTEXT.ran?(runner.request_sha)
41
38
  CONTEXT.ran(runner.request_sha)
42
-
43
- plugins.each do |plugin|
44
- if plugin.respond_to?(:test_run)
45
- plugin.test_run(pr)
46
- end
47
- end
48
-
39
+
40
+ Plugin.instrument("run", :pull_request => pr)
49
41
  runner.run
50
42
  end
51
43
 
@@ -1,3 +1,3 @@
1
1
  module OmgPullRequest
2
- VERSION = "0.4.0"
2
+ VERSION = "0.5.0"
3
3
  end
@@ -23,6 +23,7 @@ require 'omg_pull_request/git_client'
23
23
  require 'omg_pull_request/prowl'
24
24
  require 'omg_pull_request/lolcommits'
25
25
  require 'omg_pull_request/version'
26
+ require 'omg_pull_request/plugin'
26
27
 
27
28
  module OmgPullRequest
28
29
  CONTEXT = Context.new
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omg_pull_request
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -16,7 +16,7 @@ date: 2012-12-18 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: aws-s3
19
- requirement: &70291716629820 !ruby/object:Gem::Requirement
19
+ requirement: &70129346855720 !ruby/object:Gem::Requirement
20
20
  none: false
21
21
  requirements:
22
22
  - - ! '>='
@@ -24,10 +24,10 @@ dependencies:
24
24
  version: 0.6.3
25
25
  type: :runtime
26
26
  prerelease: false
27
- version_requirements: *70291716629820
27
+ version_requirements: *70129346855720
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: faraday
30
- requirement: &70291716643700 !ruby/object:Gem::Requirement
30
+ requirement: &70129346854780 !ruby/object:Gem::Requirement
31
31
  none: false
32
32
  requirements:
33
33
  - - ! '>='
@@ -35,10 +35,10 @@ dependencies:
35
35
  version: 0.8.4
36
36
  type: :runtime
37
37
  prerelease: false
38
- version_requirements: *70291716643700
38
+ version_requirements: *70129346854780
39
39
  - !ruby/object:Gem::Dependency
40
40
  name: github_api
41
- requirement: &70291716662620 !ruby/object:Gem::Requirement
41
+ requirement: &70129346874260 !ruby/object:Gem::Requirement
42
42
  none: false
43
43
  requirements:
44
44
  - - ! '>='
@@ -46,10 +46,10 @@ dependencies:
46
46
  version: 0.8.2
47
47
  type: :runtime
48
48
  prerelease: false
49
- version_requirements: *70291716662620
49
+ version_requirements: *70129346874260
50
50
  - !ruby/object:Gem::Dependency
51
51
  name: uuid
52
- requirement: &70291716658640 !ruby/object:Gem::Requirement
52
+ requirement: &70129346873600 !ruby/object:Gem::Requirement
53
53
  none: false
54
54
  requirements:
55
55
  - - ! '>='
@@ -57,10 +57,10 @@ dependencies:
57
57
  version: 2.3.5
58
58
  type: :runtime
59
59
  prerelease: false
60
- version_requirements: *70291716658640
60
+ version_requirements: *70129346873600
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: rake
63
- requirement: &70291716657800 !ruby/object:Gem::Requirement
63
+ requirement: &70129346872860 !ruby/object:Gem::Requirement
64
64
  none: false
65
65
  requirements:
66
66
  - - ! '>='
@@ -68,10 +68,10 @@ dependencies:
68
68
  version: 0.9.2.2
69
69
  type: :runtime
70
70
  prerelease: false
71
- version_requirements: *70291716657800
71
+ version_requirements: *70129346872860
72
72
  - !ruby/object:Gem::Dependency
73
73
  name: activesupport
74
- requirement: &70291716656240 !ruby/object:Gem::Requirement
74
+ requirement: &70129346872360 !ruby/object:Gem::Requirement
75
75
  none: false
76
76
  requirements:
77
77
  - - ! '>='
@@ -79,10 +79,10 @@ dependencies:
79
79
  version: 3.1.0
80
80
  type: :runtime
81
81
  prerelease: false
82
- version_requirements: *70291716656240
82
+ version_requirements: *70129346872360
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: i18n
85
- requirement: &70291716669020 !ruby/object:Gem::Requirement
85
+ requirement: &70129346871800 !ruby/object:Gem::Requirement
86
86
  none: false
87
87
  requirements:
88
88
  - - ! '>='
@@ -90,7 +90,7 @@ dependencies:
90
90
  version: 0.6.0
91
91
  type: :runtime
92
92
  prerelease: false
93
- version_requirements: *70291716669020
93
+ version_requirements: *70129346871800
94
94
  description: Have tests run automatically for your Github Pull Request
95
95
  email:
96
96
  - kenmazaika@gmail.com
@@ -112,6 +112,7 @@ files:
112
112
  - lib/omg_pull_request/github_wrapper.rb
113
113
  - lib/omg_pull_request/lolcommits.rb
114
114
  - lib/omg_pull_request/notifications.rb
115
+ - lib/omg_pull_request/plugin.rb
115
116
  - lib/omg_pull_request/prowl.rb
116
117
  - lib/omg_pull_request/storage/aws.rb
117
118
  - lib/omg_pull_request/storage/gist.rb
@@ -140,7 +141,6 @@ files:
140
141
  - test/mocks/pull_request.rb
141
142
  - test/omg_pull_request/.gitkeep
142
143
  - test/test_helper.rb
143
- - test/units/omg_pull_request/configuration_test.rb
144
144
  - test/units/omg_pull_request/context_test.rb
145
145
  - test/units/omg_pull_request/git_client_test.rb
146
146
  - test/units/omg_pull_request/github_wrapper_test.rb
@@ -190,7 +190,6 @@ test_files:
190
190
  - test/mocks/pull_request.rb
191
191
  - test/omg_pull_request/.gitkeep
192
192
  - test/test_helper.rb
193
- - test/units/omg_pull_request/configuration_test.rb
194
193
  - test/units/omg_pull_request/context_test.rb
195
194
  - test/units/omg_pull_request/git_client_test.rb
196
195
  - test/units/omg_pull_request/github_wrapper_test.rb
@@ -1,39 +0,0 @@
1
- require './test/test_helper.rb'
2
-
3
- module OmgPullRequest
4
- class ConfigurationTest < MiniTest::Unit::TestCase
5
- def test_plugins
6
- conf = { 'plugins' => 'OmgPullRequest::ConfigurationTest::MockPlugin1,OmgPullRequest::ConfigurationTest::MockPlugin2' }
7
-
8
- configuration = OmgPullRequest::Configuration.new('config' => conf)
9
- plugins = configuration.plugins
10
-
11
- plugins.each do |plugin|
12
- assert_equal({:options => conf }.with_indifferent_access, plugin.attributes)
13
- assert_equal('mock_plugin_yeah', plugin.to_s)
14
- end
15
- end
16
-
17
- class MockPlugin1
18
- attr_accessor :attributes
19
- def initialize(attributes=Hash.new)
20
- self.attributes = attributes
21
- end
22
-
23
- def to_s
24
- "mock_plugin_yeah"
25
- end
26
- end
27
-
28
- class MockPlugin2
29
- attr_accessor :attributes
30
- def initialize(attributes=Hash.new)
31
- self.attributes = attributes
32
- end
33
-
34
- def to_s
35
- "mock_plugin_yeah"
36
- end
37
- end
38
- end
39
- end