git_reflow 0.2 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -0,0 +1 @@
1
+ pkg/*
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- git_reflow (0.2)
4
+ git_reflow (0.2.1)
5
5
  github_api (= 0.6.5)
6
6
  gli (= 2.0.0)
7
7
  highline
@@ -1,3 +1,3 @@
1
1
  module GitReflow
2
- VERSION = "0.2"
2
+ VERSION = "0.2.1"
3
3
  end
data/lib/git_reflow.rb CHANGED
@@ -13,7 +13,7 @@ module GitReflow
13
13
 
14
14
  def setup
15
15
  gh_user = ask "Please enter your GitHub username: "
16
- gh_password = ask "Please enter your GitHub password (we do NOT store this): "
16
+ gh_password = ask("Please enter your GitHub password (we do NOT store this): ") { |q| q.echo = false }
17
17
  puts "\nYour GitHub account was successfully setup!"
18
18
  github = Github.new :basic_auth => "#{gh_user}:#{gh_password}"
19
19
  authorization = github.oauth.create 'scopes' => ['repo']
@@ -40,6 +40,19 @@ module GitReflow
40
40
  if error_message =~ /request already exists/i
41
41
  existing_pull_request = find_pull_request( :from => current_branch, :to => options['base'] )
42
42
  puts "Existing pull request at: #{existing_pull_request[:html_url]}"
43
+
44
+ # check for needed lgtm's
45
+ pull_comments = pull_request_comments(existing_pull_request)
46
+ if pull_comments.any?
47
+ open_comment_authors = find_authors_of_open_pull_request_comments(existing_pull_request)
48
+ last_committed_at = Time.parse existing_pull_request.head.repo.updated_at
49
+ lgtm_authors = comment_authors_for_pull_request(existing_pull_request, :with => LGTM, :after => last_committed_at)
50
+ puts "[review] LGTM given by: #{lgtm_authors.join(', ')}" if lgtm_authors.any?
51
+ puts "[notice] You still need a LGTM from: #{open_comment_authors.join(', ')}" if open_comment_authors.any?
52
+ else
53
+ puts "[notice] No one has reviewed your pull request..."
54
+ end
55
+
43
56
  ask_to_open_in_browser(existing_pull_request.html_url)
44
57
  else
45
58
  puts error_message
@@ -81,7 +94,7 @@ module GitReflow
81
94
  if deploy_and_cleanup =~ /^y/i
82
95
  puts `git push origin #{options['base']}`
83
96
  puts `git push origin :#{feature_branch}`
84
- puts `git br -D #{feature_branch}`
97
+ puts `git branch -D #{feature_branch}`
85
98
  puts "Nice job buddy."
86
99
  end
87
100
  else
@@ -177,11 +190,15 @@ module GitReflow
177
190
  existing_pull_request
178
191
  end
179
192
 
180
- def find_authors_of_open_pull_request_comments(pull_request)
181
- # first we'll gather all the authors that have commented on the pull request
193
+ def pull_request_comments(pull_request)
182
194
  comments = github.issues.comments.all remote_user, remote_repo_name, pull_request[:number]
183
195
  review_comments = github.pull_requests.comments.all remote_user, remote_repo_name, pull_request[:number]
184
- all_comments = comments + review_comments
196
+ comments + review_comments
197
+ end
198
+
199
+ def find_authors_of_open_pull_request_comments(pull_request)
200
+ # first we'll gather all the authors that have commented on the pull request
201
+ all_comments = pull_request_comments(pull_request)
185
202
  comment_authors = comment_authors_for_pull_request(pull_request)
186
203
 
187
204
  # now we need to check that all the commented authors have given a lgtm after the last commit
@@ -202,12 +219,11 @@ module GitReflow
202
219
  end
203
220
 
204
221
  def comment_authors_for_pull_request(pull_request, options = {})
205
- comments = github.issues.comments.all remote_user, remote_repo_name, pull_request[:number]
206
- review_comments = github.pull_requests.comments.all remote_user, remote_repo_name, pull_request[:number]
207
- all_comments = comments + review_comments
222
+ all_comments = pull_request_comments(pull_request)
208
223
  comment_authors = []
209
224
 
210
225
  all_comments.each do |comment|
226
+ next if options[:after] and Time.parse(comment.created_at) < options[:after]
211
227
  comment_authors << comment.user.login if !comment_authors.include?(comment.user.login) and (options[:with].nil? or comment.body =~ options[:with])
212
228
  end
213
229
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git_reflow
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.2'
4
+ version: 0.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2012-08-28 00:00:00.000000000 Z
14
+ date: 2012-08-30 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rake
@@ -250,7 +250,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
250
250
  version: '0'
251
251
  segments:
252
252
  - 0
253
- hash: 3361931726722795654
253
+ hash: -1057923408803391323
254
254
  required_rubygems_version: !ruby/object:Gem::Requirement
255
255
  none: false
256
256
  requirements:
@@ -259,7 +259,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
259
259
  version: '0'
260
260
  segments:
261
261
  - 0
262
- hash: 3361931726722795654
262
+ hash: -1057923408803391323
263
263
  requirements: []
264
264
  rubyforge_project:
265
265
  rubygems_version: 1.8.24