lita-github_pr_list 0.0.1 → 0.0.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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 92954eb65ab5ee5e43a5efc4ceff2739ed631dc4
|
4
|
+
data.tar.gz: b7c95004063f30bcca990cf590a8b4063fe0a9db
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d4ebb88010886876c09ce16f37b95019079ebc7aadd2430cadfb8a61ed3fb9955d49d7e4c1af07baede2dad81f4afc146122e73078fd6140523e6d625b0bef0d
|
7
|
+
data.tar.gz: 7d9466eae44d281956e3cac6fb5ac4edb09f0dcb7bf2af4f35083f7093409bdd7ce89cb1ce58adf64cb46a09a2135eab44c170921dc9af7678e4c51d6d47c878
|
@@ -3,28 +3,40 @@ require "octokit"
|
|
3
3
|
module Lita
|
4
4
|
module GithubPrList
|
5
5
|
class WebHook
|
6
|
-
attr_accessor :web_hook, :github_client, :github_organization, :github_pull_requests
|
6
|
+
attr_accessor :web_hook, :github_client, :github_organization, :github_pull_requests, :response
|
7
7
|
|
8
8
|
def initialize(params = {})
|
9
9
|
github_token = params.fetch(:github_token, nil)
|
10
10
|
self.github_organization = params.fetch(:github_organization, nil)
|
11
11
|
self.web_hook = params.fetch(:web_hook, nil)
|
12
|
+
self.response = params.fetch(:response, nil)
|
12
13
|
|
13
|
-
|
14
|
+
if github_token.nil? || github_organization.nil? || web_hook.nil? || response.nil?
|
15
|
+
raise "invalid params in #{self.class.name}"
|
16
|
+
end
|
14
17
|
|
15
18
|
self.github_client = Octokit::Client.new(access_token: github_token, auto_paginate: true)
|
16
19
|
end
|
17
20
|
|
18
21
|
def add_hooks
|
19
|
-
|
20
|
-
config = { url: "#{web_hook}", content_type: "json" }
|
21
|
-
events = { events: ["issue_comment"] }
|
22
|
+
response.reply "Adding webhooks to #{github_organization}, this may take awhile..."
|
22
23
|
|
23
|
-
|
24
|
+
github_client.repositories(github_organization).each do |repo|
|
25
|
+
begin
|
26
|
+
create_hook(repo.full_name)
|
27
|
+
rescue => ex
|
28
|
+
if ex.errors.first[:message] == "Hook already exists on this repository"
|
29
|
+
next
|
30
|
+
end
|
31
|
+
end
|
24
32
|
end
|
33
|
+
|
34
|
+
response.reply "Finished adding webhooks to #{github_organization}"
|
25
35
|
end
|
26
36
|
|
27
37
|
def remove_hooks
|
38
|
+
response.reply "Removing #{web_hook} webhooks from #{github_organization}, this may take awhile..."
|
39
|
+
|
28
40
|
github_client.repositories(github_organization).each do |repo|
|
29
41
|
github_client.hooks(repo.full_name).each do |hook|
|
30
42
|
if hook.config.url == web_hook
|
@@ -32,6 +44,17 @@ module Lita
|
|
32
44
|
end
|
33
45
|
end
|
34
46
|
end
|
47
|
+
|
48
|
+
response.reply "Finished removing webhooks from #{github_organization}"
|
49
|
+
end
|
50
|
+
|
51
|
+
private
|
52
|
+
|
53
|
+
def create_hook(repo_full_name)
|
54
|
+
config = { url: "#{web_hook}", content_type: "json" }
|
55
|
+
events = { events: ["issue_comment"] }
|
56
|
+
|
57
|
+
github_client.create_hook(repo_full_name, "web", config, events)
|
35
58
|
end
|
36
59
|
|
37
60
|
end
|
@@ -57,24 +57,21 @@ module Lita
|
|
57
57
|
end
|
58
58
|
|
59
59
|
def add_pr_hooks(response)
|
60
|
-
response.reply "Adding webhooks to #{github_organization}, this may take "\
|
61
|
-
"awhile..."
|
62
|
-
|
63
60
|
Lita::GithubPrList::WebHook.new(github_organization: github_organization,
|
64
61
|
github_token: github_access_token,
|
65
|
-
web_hook: web_hook
|
62
|
+
web_hook: web_hook,
|
63
|
+
response: response).add_hooks
|
66
64
|
end
|
67
65
|
|
68
66
|
def remove_pr_hooks(response)
|
69
|
-
response.reply "Removing github_pr_list webhooks from #{github_organization},"\
|
70
|
-
" this may take awhile..."
|
71
|
-
|
72
67
|
Lita::GithubPrList::WebHook.new(github_organization: github_organization,
|
73
68
|
github_token: github_access_token,
|
74
|
-
web_hook: web_hook
|
69
|
+
web_hook: web_hook,
|
70
|
+
response: response).remove_hooks
|
75
71
|
end
|
76
72
|
|
77
73
|
private
|
74
|
+
|
78
75
|
def github_organization
|
79
76
|
Lita.config.handlers.github_pr_list.github_organization
|
80
77
|
end
|
@@ -35,7 +35,8 @@ describe Lita::Handlers::GithubPrList, lita_handler: true do
|
|
35
35
|
|
36
36
|
send_command("pr add hooks")
|
37
37
|
|
38
|
-
expect(replies
|
38
|
+
expect(replies).to include("Adding webhooks to aaaaaabbbbbbcccccc, this may take awhile...")
|
39
|
+
expect(replies).to include("Finished adding webhooks to aaaaaabbbbbbcccccc")
|
39
40
|
end
|
40
41
|
|
41
42
|
it "removes web hooks from an org's repos" do
|
@@ -45,6 +46,20 @@ describe Lita::Handlers::GithubPrList, lita_handler: true do
|
|
45
46
|
|
46
47
|
send_command("pr remove hooks")
|
47
48
|
|
48
|
-
expect(replies
|
49
|
+
expect(replies).to include("Removing https://example.com/hook webhooks from aaaaaabbbbbbcccccc, this may take awhile...")
|
50
|
+
expect(replies).to include("Finished removing webhooks from aaaaaabbbbbbcccccc")
|
51
|
+
end
|
52
|
+
|
53
|
+
it "catches exceptions when the hook already exists and continues" do
|
54
|
+
expect_any_instance_of(Octokit::Client).to receive(:repositories).and_return(repos)
|
55
|
+
expect_any_instance_of(Octokit::Client).to receive(:create_hook).twice.and_return(nil)
|
56
|
+
exception = Octokit::UnprocessableEntity.new
|
57
|
+
allow(exception).to receive(:errors).and_return([OpenStruct.new(message: "Hook already exists on this repository")])
|
58
|
+
allow(Lita::GithubPrList::WebHook).to receive(:create_hook).and_raise(exception)
|
59
|
+
|
60
|
+
send_command("pr add hooks")
|
61
|
+
|
62
|
+
expect(replies).to include("Adding webhooks to aaaaaabbbbbbcccccc, this may take awhile...")
|
63
|
+
expect(replies).to include("Finished adding webhooks to aaaaaabbbbbbcccccc")
|
49
64
|
end
|
50
65
|
end
|