git-review 0.8.7 → 0.8.8

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.
Files changed (2) hide show
  1. data/lib/git-review.rb +19 -2
  2. metadata +3 -3
data/lib/git-review.rb CHANGED
@@ -5,6 +5,11 @@ require 'launchy'
5
5
  # Time is used to parse time strings from git back into Time objects.
6
6
  require 'time'
7
7
 
8
+ # A custom error to raise, if we know we can't go on.
9
+ class UnprocessableState < StandardError
10
+ end
11
+
12
+
8
13
  class GitReview
9
14
 
10
15
  ## COMMANDS ##
@@ -146,7 +151,7 @@ class GitReview
146
151
  end
147
152
  unless git_call("cherry #{target_branch}").empty?
148
153
  # Push latest commits to the remote branch (and by that, create it if necessary).
149
- git_call "push --set-upstream origin #{@local_branch}"
154
+ git_call "push --set-upstream origin #{@local_branch}", debug_mode, true
150
155
  # Gather information.
151
156
  last_request_id = @pending_requests.collect{|req| req['number'] }.sort.last.to_i
152
157
  title = "[Review] Request from '#{git_config['github.login']}' @ '#{source}'"
@@ -195,6 +200,8 @@ class GitReview
195
200
  end
196
201
  help
197
202
  end
203
+ rescue UnprocessableState
204
+ puts 'Execution of git-review command stopped.'
198
205
  end
199
206
 
200
207
  # Show a quick reference of available commands.
@@ -246,7 +253,7 @@ class GitReview
246
253
  end
247
254
 
248
255
  # System call to 'git'.
249
- def git_call(command, verbose = debug_mode)
256
+ def git_call(command, verbose = debug_mode, enforce_success = false)
250
257
  if verbose
251
258
  puts
252
259
  puts " git #{command}"
@@ -254,6 +261,11 @@ class GitReview
254
261
  end
255
262
  output = `git #{command}`
256
263
  puts output if verbose and not output.empty?
264
+ # If we need sth. to succeed, but it doesn't stop right there.
265
+ if enforce_success and not last_command_successful?
266
+ puts output unless output.empty?
267
+ raise UnprocessableState
268
+ end
257
269
  output
258
270
  end
259
271
 
@@ -408,4 +420,9 @@ class GitReview
408
420
  matches ? [matches[1], matches[2].sub(/\.git\z/, '')] : [nil, nil]
409
421
  end
410
422
 
423
+ # Returns a boolean stating whether the last issued system call was successful.
424
+ def last_command_successful?
425
+ $?.exitstatus == 0
426
+ end
427
+
411
428
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git-review
3
3
  version: !ruby/object:Gem::Version
4
- hash: 49
4
+ hash: 47
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 8
9
- - 7
10
- version: 0.8.7
9
+ - 8
10
+ version: 0.8.8
11
11
  platform: ruby
12
12
  authors:
13
13
  - Dominik Bamberger, Cristian Messel