tutter-sppuppet 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 +4 -4
- data/.gemspec +1 -1
- data/README.md +8 -3
- data/lib/tutter/action/sppuppet.rb +22 -4
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9c82c8f1b531c0e1577d3d18c117f8ebda785b4c
|
4
|
+
data.tar.gz: c8995bccc8a4f0d9a4a27477ca13bfb7243ddd66
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3a416fb995a3bebf146e3dc6b174e644d38830d664be2f41aa75eb740829dfd62583cd2cf386bd0c2788773f3e2e7cfe8efa7c6508ff0fd47c16a680c7544fbd
|
7
|
+
data.tar.gz: 2575109d71bbc07c5f82a85f44a60e3a9a04c8c4617fcfe4416fb4aaa68c90b717119c50283b1ab4aaa6cf771d467c2f861fc5823afd9cf22c6ff55c12eef177
|
data/.gemspec
CHANGED
data/README.md
CHANGED
@@ -11,13 +11,18 @@ desired amount of +1's(configurable)
|
|
11
11
|
|
12
12
|
A pull request will be blocked if it has a _-1_ comment
|
13
13
|
|
14
|
+
## Installation
|
14
15
|
|
15
|
-
|
16
|
+
gem install tutter-sppuppet
|
17
|
+
|
18
|
+
sppuppet specific settings (goes into tutter.yaml)
|
16
19
|
|
17
20
|
action: 'sppuppet'
|
18
21
|
action_settings:
|
19
|
-
|
22
|
+
plus_ones_required: 3
|
23
|
+
debug: false
|
20
24
|
|
21
25
|
### TODO
|
22
26
|
* whitelist
|
23
|
-
* blacklist
|
27
|
+
* blacklist
|
28
|
+
* tests
|
@@ -5,30 +5,48 @@ class Sppuppet
|
|
5
5
|
@client = client
|
6
6
|
@project = project
|
7
7
|
@data = data
|
8
|
+
@debug = settings['debug'] unless settings['debug'].nil?
|
9
|
+
end
|
10
|
+
|
11
|
+
def debug(message)
|
12
|
+
puts message if @debug
|
8
13
|
end
|
9
14
|
|
10
15
|
def run
|
11
16
|
pull_request_id = @data['issue']['number']
|
17
|
+
debug "pull request id: #{pull_request_id}"
|
12
18
|
pr = @client.pull_request @project, pull_request_id
|
13
19
|
plus_one = {}
|
14
20
|
merge = false
|
15
21
|
|
16
22
|
if pr.mergeable_state != 'clean'
|
17
|
-
|
23
|
+
debug "merge state for #{@project} #{pull_request_id} is not clean. Current state: #{pr.mergeable_state}"
|
24
|
+
return false
|
25
|
+
end
|
26
|
+
|
27
|
+
# No comments, no need to go further.
|
28
|
+
if pr.comments == 0
|
29
|
+
debug 'no comments, skipping'
|
18
30
|
return false
|
19
31
|
end
|
20
32
|
|
21
33
|
# Don't care about code we can't merge
|
22
34
|
return false unless pr.mergeable
|
23
35
|
|
36
|
+
# We fetch the latest commit and it's date.
|
37
|
+
last_commit = @client.pull_request_commits(@project, pull_request_id).last
|
38
|
+
last_commit_date = last_commit.commit.committer.date
|
39
|
+
|
24
40
|
comments = @client.issue_comments(@project, pull_request_id)
|
25
41
|
|
26
42
|
# Check each comment for +1 and merge comments
|
27
43
|
comments.each do |i|
|
28
44
|
|
45
|
+
# Comment is older than last commit. We only want to check for +1 in newer comments
|
46
|
+
next if last_commit_date > i.created_at
|
47
|
+
|
29
48
|
if /^(\+1|:\+1)/.match i.body
|
30
49
|
# pull request submitter cant +1
|
31
|
-
|
32
50
|
unless pr.user.login == i.attrs[:user].attrs[:login]
|
33
51
|
plus_one[i.attrs[:user].attrs[:login]] = 1
|
34
52
|
end
|
@@ -37,7 +55,7 @@ class Sppuppet
|
|
37
55
|
# TODO it should calculate the +1's - the -1's
|
38
56
|
# Never merge if someone says -1
|
39
57
|
if /^(\-1|:\-1:)/.match i.body
|
40
|
-
|
58
|
+
debug "#{@project} #{pull_request_id} has a -1. I will not take the blame"
|
41
59
|
return false
|
42
60
|
end
|
43
61
|
end
|
@@ -45,7 +63,7 @@ class Sppuppet
|
|
45
63
|
merge = true if comments.last.body == '!merge'
|
46
64
|
|
47
65
|
if plus_one.count >= @settings['plus_ones_required'] and merge
|
48
|
-
|
66
|
+
debug "merging #{pull_request_id} #{@project}"
|
49
67
|
@client.merge_pull_request(@project, pull_request_id, 'SHIPPING!!')
|
50
68
|
end
|
51
69
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tutter-sppuppet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Johan Haals
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-02-
|
11
|
+
date: 2014-02-16 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: This tutter action let non collaborators review and merge code without
|
14
14
|
having more then read access to the project
|
@@ -46,3 +46,4 @@ signing_key:
|
|
46
46
|
specification_version: 4
|
47
47
|
summary: Github code review without collaborator access
|
48
48
|
test_files: []
|
49
|
+
has_rdoc:
|