polarbear 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.
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format progress
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in polarbear.gemspec
4
+ gemspec
data/Guardfile ADDED
@@ -0,0 +1,26 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ notification :growl_notify
5
+
6
+ guard :rspec do
7
+ watch(%r{^spec/.+_spec\.rb$})
8
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
9
+ watch('spec/spec_helper.rb') { "spec" }
10
+
11
+ # Rails example
12
+ watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
13
+ watch(%r{^app/(.*)(\.erb|\.haml|\.slim)$}) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
14
+ watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
15
+ watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
16
+ watch('config/routes.rb') { "spec/routing" }
17
+ watch('app/controllers/application_controller.rb') { "spec/controllers" }
18
+
19
+ # Capybara features specs
20
+ watch(%r{^app/views/(.+)/.*\.(erb|haml|slim)$}) { |m| "spec/features/#{m[1]}_spec.rb" }
21
+
22
+ # Turnip features and steps
23
+ watch(%r{^spec/acceptance/(.+)\.feature$})
24
+ watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance' }
25
+ end
26
+
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Bone Crusher
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,31 @@
1
+ # Polarbear
2
+
3
+ <a href="https://codeclimate.com/github/patbonecrusher/polarbear"><img src="https://codeclimate.com/github/patbonecrusher/polarbear.png" /></a>
4
+
5
+ TODO: Write a gem description
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ gem 'polarbear'
12
+
13
+ And then execute:
14
+
15
+ $ bundle
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install polarbear
20
+
21
+ ## Usage
22
+
23
+ TODO: Write usage instructions here
24
+
25
+ ## Contributing
26
+
27
+ 1. Fork it
28
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
29
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
30
+ 4. Push to the branch (`git push origin my-new-feature`)
31
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,22 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ task :default => :spec
5
+
6
+ RSpec::Core::RakeTask.new(:coverage) do |spec|
7
+ # add simplecov
8
+ ENV["COVERAGE"] = 'yes'
9
+
10
+ # run the specs
11
+ Rake::Task['spec'].execute
12
+ end
13
+
14
+
15
+ require 'rake/version_task'
16
+ Rake::VersionTask.new
17
+
18
+ desc "Open an irb session preloaded with this library"
19
+ task :console do
20
+ sh "irb -rubygems -I lib -r polarbear.rb"
21
+ end
22
+
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.2.0
data/bin/poohbear ADDED
@@ -0,0 +1,133 @@
1
+ #!/usr/bin/env ruby
2
+ require 'command-dispatcher'
3
+
4
+ $scriptPath = File.expand_path(File.dirname(__FILE__))
5
+ $scriptName = File.basename(__FILE__)
6
+ $command = ARGV.shift
7
+ dispatcher = CommandDispatcher::Dispatcher.new( $scriptPath, $scriptName )
8
+
9
+ begin
10
+ dispatcher.dispatchCommand($command, *ARGV)
11
+ rescue ArgumentError => ex
12
+ $stderr.puts 'Error: ' + ex.to_s + '. Please specify a valid command.'
13
+ dispatcher.usage
14
+ exit -1
15
+ ensure
16
+ end
17
+
18
+ require 'highline/import'
19
+ require 'base64'
20
+ require 'polarbear'
21
+
22
+ #-----------------------------------------------------------------------------
23
+ # ................ A R G U M E N T S .. P R O C E S S I N G .................
24
+ #-----------------------------------------------------------------------------
25
+
26
+ #-----------------------------------------------------------------------------
27
+ # This hash will hold all of the options parsed from the command-line by
28
+ # OptionParser.
29
+ # login/logout
30
+ # creating a new review (reviewer/observers, title)
31
+ # adding diff to an existing review
32
+ # cancelling review
33
+ # finishing a review
34
+ # deleting a review
35
+ # open a review in the browser
36
+ # get review info such as state by id or by title
37
+ #-----------------------------------------------------------------------------
38
+ options = {}
39
+ loglevels = [:debug, :info, :warn, :error, :fatal]
40
+
41
+ optparse = OptionParser.new do |opts|
42
+ # Set a banner, displayed at the top of the help screen.
43
+ opts.banner = 'Usage: poohbear [options] oldbranch newbranch ...'
44
+
45
+ # Define the options, and what they do
46
+ options[:list] = []
47
+ opts.on('--login', 'login to the code collaborator server') do |l|
48
+ options[:list] = l
49
+ end
50
+
51
+ options[:quick] = false
52
+ opts.on( '-q', '--quick', 'Perform the task quickly' ) do
53
+ options[:quick] = true
54
+ end
55
+
56
+ options[:logfile] = nil
57
+ opts.on( '-l', '--logfile FILE', 'Write log to FILE' ) do |file|
58
+ options[:logfile] = file
59
+ end
60
+
61
+ options[:usage] = nil
62
+ opts.on( '-u', '--usage', 'Print one liner about this script' ) do
63
+ options[:usage] = true
64
+ end
65
+
66
+ options[:list] = []
67
+ opts.on( '-a', '--list a,b,c', Array, 'List of parameters') do |l|
68
+ options[:list] = l
69
+ end
70
+
71
+ options[:loglevel] = nil
72
+ opts.on( '-i', '--loglevel OPT', loglevels, 'Log level') do |s|
73
+ options[:loglevel] = s
74
+ end
75
+
76
+ opts.on( '-v', '--verbose', 'Verbose ') do
77
+ options[:loglevel] = :info
78
+ end
79
+
80
+ # This displays the help screen, all programs are assumed to have this
81
+ # option.
82
+ opts.on( '-h', '--help', 'Display this screen' ) do
83
+ puts opts
84
+ exit
85
+ end
86
+ end
87
+
88
+ #-----------------------------------------------------------------------------
89
+ # Parse the command-line. Remember there are two forms of the parse method.
90
+ # The 'parse' method simply parses ARGV, while the 'parse!' method parses
91
+ # ARGV and removes any options found there, as well as any parameters for the
92
+ # the options. What's left is the list of files to resize.
93
+ #-----------------------------------------------------------------------------
94
+ begin
95
+ optparse.parse!
96
+ rescue => ex
97
+ puts ex.to_s
98
+ exit 1
99
+ end
100
+
101
+ _codecollab = PolarBear::CodeCollab.new
102
+ #_codecollab.login('https://development-us:8443', 'plaplante', "\"p0utgr0s'\"")
103
+ #p _codecollab.active_reviews
104
+
105
+ new_review = PolarBear::Review.new(
106
+ :title => 'my nice review',
107
+ :author => _codecollab.configuration.username,
108
+ :reviewers => %w(jearl),
109
+ :observers => %w(aburr),
110
+ :gitdiffs_args => 'develop master'
111
+ )
112
+ new_review.create_it!
113
+ new_review.add_git_diff('develop', 'master')
114
+
115
+ p new_review
116
+
117
+ #_codecollab.get_review_with_title 'my review'
118
+
119
+ #review = _codecollab.create_review(
120
+ # :title => 'my review',
121
+ # :observers => %w(aburr),
122
+ # :reviewers => %w(jearl),
123
+ # :diff => 'diff stuff'
124
+ #)
125
+ #puts review.review_id
126
+
127
+ #reviews_in_planning = _codecollab.reviews_in_planning('Pat Laplante')
128
+ #_codecollab.delete_reviews(reviews_in_planning)
129
+
130
+ #puts _codecollab.admin.create_review('pat is awesome')
131
+
132
+
133
+
@@ -0,0 +1,93 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'highline/import'
4
+ require 'base64'
5
+ require 'polarbear'
6
+
7
+ #-----------------------------------------------------------------------------
8
+ #-----------------------------------------------------------------------------
9
+ def usage
10
+ puts 'Commands for login in your code collaborator server.'
11
+ exit 0
12
+ end
13
+
14
+ #-----------------------------------------------------------------------------
15
+ # ................ A R G U M E N T S .. P R O C E S S I N G .................
16
+ #-----------------------------------------------------------------------------
17
+
18
+ #-----------------------------------------------------------------------------
19
+ # This hash will hold all of the options parsed from the command-line by
20
+ # OptionParser.
21
+ # login/logout
22
+ # creating a new review (reviewer/observers, title)
23
+ # adding diff to an existing review
24
+ # cancelling review
25
+ # finishing a review
26
+ # deleting a review
27
+ # open a review in the browser
28
+ # get review info such as state by id or by title
29
+ #-----------------------------------------------------------------------------
30
+ options = {}
31
+
32
+ optparse = OptionParser.new do |opts|
33
+ # Set a banner, displayed at the top of the help screen.
34
+ opts.banner = 'Usage: poohbear [options] oldbranch newbranch ...'
35
+
36
+ # Define the options, and what they do
37
+ options[:username] = nil
38
+ opts.on('-n', '--username username', 'username') do |l|
39
+ options[:username] = l
40
+ end
41
+
42
+ options[:password] = nil
43
+ opts.on('-p', '--password PASSWORD', 'password') do |l|
44
+ options[:password] = l
45
+ end
46
+
47
+ options[:url] = nil
48
+ opts.on('-s', '--url URL', 'url') do |l|
49
+ options[:url] = l
50
+ end
51
+
52
+ options[:usage] = nil
53
+ opts.on( '-u', '--usage', 'Print one liner about this script' ) do
54
+ options[:usage] = true
55
+ end
56
+
57
+ opts.on( '-v', '--verbose', 'Verbose ') do
58
+ options[:loglevel] = :info
59
+ end
60
+
61
+ # This displays the help screen, all programs are assumed to have this
62
+ # option.
63
+ opts.on( '-h', '--help', 'Display this screen' ) do
64
+ puts opts
65
+ exit
66
+ end
67
+ end
68
+
69
+ #-----------------------------------------------------------------------------
70
+ # Parse the command-line. Remember there are two forms of the parse method.
71
+ # The 'parse' method simply parses ARGV, while the 'parse!' method parses
72
+ # ARGV and removes any options found there, as well as any parameters for the
73
+ # the options. What's left is the list of files to resize.
74
+ #-----------------------------------------------------------------------------
75
+ begin
76
+ optparse.parse!
77
+ rescue => ex
78
+ puts ex.to_s
79
+ exit 1
80
+ end
81
+
82
+ usage if options[:usage]
83
+
84
+ _codecollab = PolarBear::CodeCollab.new
85
+
86
+ options[:url] = _codecollab.configuration.url if options[:url].nil?
87
+ options[:username] = _codecollab.configuration.username if options[:username].nil?
88
+
89
+ options[:url] = ask('URL: ') if options[:url].nil? || options[:url].empty?
90
+ options[:username] = ask('Username: ') if options[:username].nil? || options[:username].empty?
91
+ options[:password] = ask('Password: ') { |q| q.echo = '*' } if options[:password].nil?
92
+
93
+ _codecollab.login("#{options[:url]}", "#{options[:username]}", "\"#{options[:password]}\"")
@@ -0,0 +1,67 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'highline/import'
4
+ require 'base64'
5
+ require 'polarbear'
6
+
7
+ #-----------------------------------------------------------------------------
8
+ #-----------------------------------------------------------------------------
9
+ def usage
10
+ puts 'Commands for login out from your code collaborator server.'
11
+ exit 0
12
+ end
13
+
14
+ #-----------------------------------------------------------------------------
15
+ # ................ A R G U M E N T S .. P R O C E S S I N G .................
16
+ #-----------------------------------------------------------------------------
17
+
18
+ #-----------------------------------------------------------------------------
19
+ #-----------------------------------------------------------------------------
20
+ options = {}
21
+
22
+ optparse = OptionParser.new do |opts|
23
+ # Set a banner, displayed at the top of the help screen.
24
+ opts.banner = 'Usage: poohbear logout'
25
+
26
+ options[:usage] = nil
27
+ opts.on( '-u', '--usage', 'Print one liner about this script' ) do
28
+ options[:usage] = true
29
+ end
30
+
31
+ opts.on( '-v', '--verbose', 'Verbose ') do
32
+ options[:loglevel] = :info
33
+ end
34
+
35
+ # This displays the help screen, all programs are assumed to have this
36
+ # option.
37
+ opts.on( '-h', '--help', 'Display this screen' ) do
38
+ puts opts
39
+ exit
40
+ end
41
+ end
42
+
43
+ #-----------------------------------------------------------------------------
44
+ # Parse the command-line. Remember there are two forms of the parse method.
45
+ # The 'parse' method simply parses ARGV, while the 'parse!' method parses
46
+ # ARGV and removes any options found there, as well as any parameters for the
47
+ # the options. What's left is the list of files to resize.
48
+ #-----------------------------------------------------------------------------
49
+ begin
50
+ optparse.parse!
51
+ rescue => ex
52
+ puts ex.to_s
53
+ exit 1
54
+ end
55
+
56
+ usage if options[:usage]
57
+
58
+ _codecollab = PolarBear::CodeCollab.new
59
+
60
+ options[:url] = _codecollab.configuration.url if options[:url].nil?
61
+ options[:username] = _codecollab.configuration.username if options[:username].nil?
62
+
63
+ options[:url] = ask('URL: ') if options[:url].nil? || options[:url].empty?
64
+ options[:username] = ask('Username: ') if options[:username].nil? || options[:username].empty?
65
+ options[:password] = ask('Password: ') { |q| q.echo = '*' } if options[:password].nil?
66
+
67
+ _codecollab.login("#{options[:url]}", "#{options[:username]}", "\"#{options[:password]}\"")
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env ruby
2
+ require 'command-dispatcher'
3
+
4
+ $scriptPath = File.expand_path(File.dirname(__FILE__))
5
+ $scriptName = File.basename(__FILE__)
6
+ $command = ARGV.shift
7
+ dispatcher = CommandDispatcher::Dispatcher.new( $scriptPath, $scriptName )
8
+
9
+ #-----------------------------------------------------------------------------
10
+ #-----------------------------------------------------------------------------
11
+ def usage
12
+ puts 'Commands for working on a review.'
13
+ exit 0
14
+ end
15
+
16
+ #-----------------------------------------------------------------------------
17
+ # ................ A R G U M E N T S .. P R O C E S S I N G .................
18
+ #-----------------------------------------------------------------------------
19
+
20
+ if ($command == '--usage')
21
+ usage
22
+ end
23
+
24
+ begin
25
+ dispatcher.dispatchCommand($command, *ARGV)
26
+ rescue ArgumentError => ex
27
+ $stderr.puts 'Error: ' + ex.to_s + '. Please specify a valid command.'
28
+ dispatcher.usage
29
+ exit -1
30
+ ensure
31
+ end
@@ -0,0 +1,93 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'highline/import'
4
+ require 'base64'
5
+ require 'polarbear'
6
+
7
+ #-----------------------------------------------------------------------------
8
+ #-----------------------------------------------------------------------------
9
+ def usage
10
+ puts 'Commands for login in your code collaborator server.'
11
+ exit 0
12
+ end
13
+
14
+ #-----------------------------------------------------------------------------
15
+ # ................ A R G U M E N T S .. P R O C E S S I N G .................
16
+ #-----------------------------------------------------------------------------
17
+
18
+ #-----------------------------------------------------------------------------
19
+ # This hash will hold all of the options parsed from the command-line by
20
+ # OptionParser.
21
+ # login/logout
22
+ # creating a new review (reviewer/observers, title)
23
+ # adding diff to an existing review
24
+ # cancelling review
25
+ # finishing a review
26
+ # deleting a review
27
+ # open a review in the browser
28
+ # get review info such as state by id or by title
29
+ #-----------------------------------------------------------------------------
30
+ options = {}
31
+
32
+ optparse = OptionParser.new do |opts|
33
+ # Set a banner, displayed at the top of the help screen.
34
+ opts.banner = 'Usage: poohbear [options] oldbranch newbranch ...'
35
+
36
+ # Define the options, and what they do
37
+ options[:username] = nil
38
+ opts.on('-n', '--username username', 'username') do |l|
39
+ options[:username] = l
40
+ end
41
+
42
+ options[:password] = nil
43
+ opts.on('-p', '--password PASSWORD', 'password') do |l|
44
+ options[:password] = l
45
+ end
46
+
47
+ options[:url] = nil
48
+ opts.on('-s', '--url URL', 'url') do |l|
49
+ options[:url] = l
50
+ end
51
+
52
+ options[:usage] = nil
53
+ opts.on( '-u', '--usage', 'Print one liner about this script' ) do
54
+ options[:usage] = true
55
+ end
56
+
57
+ opts.on( '-v', '--verbose', 'Verbose ') do
58
+ options[:loglevel] = :info
59
+ end
60
+
61
+ # This displays the help screen, all programs are assumed to have this
62
+ # option.
63
+ opts.on( '-h', '--help', 'Display this screen' ) do
64
+ puts opts
65
+ exit
66
+ end
67
+ end
68
+
69
+ #-----------------------------------------------------------------------------
70
+ # Parse the command-line. Remember there are two forms of the parse method.
71
+ # The 'parse' method simply parses ARGV, while the 'parse!' method parses
72
+ # ARGV and removes any options found there, as well as any parameters for the
73
+ # the options. What's left is the list of files to resize.
74
+ #-----------------------------------------------------------------------------
75
+ begin
76
+ optparse.parse!
77
+ rescue => ex
78
+ puts ex.to_s
79
+ exit 1
80
+ end
81
+
82
+ usage if options[:usage]
83
+
84
+ _codecollab = PolarBear::CodeCollab.new
85
+
86
+ options[:url] = _codecollab.configuration.url if options[:url].nil?
87
+ options[:username] = _codecollab.configuration.username if options[:username].nil?
88
+
89
+ options[:url] = ask('URL: ') if options[:url].nil? || options[:url].empty?
90
+ options[:username] = ask('Username: ') if options[:username].nil? || options[:username].empty?
91
+ options[:password] = ask('Password: ') { |q| q.echo = '*' } if options[:password].nil?
92
+
93
+ _codecollab.login("#{options[:url]}", "#{options[:username]}", "\"#{options[:password]}\"")
@@ -0,0 +1,146 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'highline/import'
4
+ require 'base64'
5
+ require 'polarbear'
6
+ require 'gitit'
7
+
8
+ #-----------------------------------------------------------------------------
9
+ #-----------------------------------------------------------------------------
10
+ def usage
11
+ puts 'Commands for creating a new review.'
12
+ exit 0
13
+ end
14
+
15
+ #-----------------------------------------------------------------------------
16
+ # ................ A R G U M E N T S .. P R O C E S S I N G .................
17
+ #-----------------------------------------------------------------------------
18
+
19
+ #-----------------------------------------------------------------------------
20
+ # Will try to infer the source control mechanism if possible and call.
21
+ #-----------------------------------------------------------------------------
22
+ options = {}
23
+
24
+ optparse = OptionParser.new do |opts|
25
+ # Set a banner, displayed at the top of the help screen.
26
+ opts.banner = 'Usage: poohbear create [options]'
27
+
28
+ # Define the options, and what they do
29
+ options[:title] = nil
30
+ opts.on('-t', '--title title', 'review title') do |title|
31
+ options[:title] = title
32
+ end
33
+
34
+ options[:reviewers] = []
35
+ opts.on('-r', '--reviewers reva,revb,revc', 'list of reviewers') do |reviewers|
36
+ options[:reviewers] = reviewers
37
+ end
38
+
39
+ options[:observers] = []
40
+ opts.on('-o', '--observers reva,revb,revc', 'list of observers') do |observers|
41
+ options[:observers] = observers
42
+ end
43
+
44
+ options[:base_branch] = nil
45
+ opts.on('-b', '--base_branch branch', 'base branch name') do |branch|
46
+ options[:base_branch] = branch
47
+ end
48
+
49
+ options[:current_branch] = nil
50
+ opts.on('-c', '--current_branch branch', 'current branch name') do |branch|
51
+ options[:current_branch] = branch
52
+ end
53
+
54
+ options[:usage] = nil
55
+ opts.on( '-u', '--usage', 'Print one liner about this script' ) do
56
+ options[:usage] = true
57
+ end
58
+
59
+ options[:auto_answer] = nil
60
+ opts.on( '-y', '--auto_answer', 'Won\'t prompt the user for anything and rely on args and defaults' ) do
61
+ options[:auto_answer] = true
62
+ end
63
+
64
+ opts.on( '-v', '--verbose', 'Verbose ') do
65
+ options[:loglevel] = :info
66
+ end
67
+
68
+ # This displays the help screen, all programs are assumed to have this
69
+ # option.
70
+ opts.on( '-h', '--help', 'Display this screen' ) do
71
+ puts opts
72
+ exit
73
+ end
74
+ end
75
+
76
+ #-----------------------------------------------------------------------------
77
+ # Parse the command-line. Remember there are two forms of the parse method.
78
+ # The 'parse' method simply parses ARGV, while the 'parse!' method parses
79
+ # ARGV and removes any options found there, as well as any parameters for the
80
+ # the options. What's left is the list of files to resize.
81
+ #-----------------------------------------------------------------------------
82
+ begin
83
+ optparse.parse!
84
+ rescue => ex
85
+ puts ex.to_s
86
+ exit 1
87
+ end
88
+
89
+ usage if options[:usage]
90
+
91
+ # Do some validation
92
+ _gitit = Gitit::Git.new(Dir.pwd)
93
+ unless _gitit.repo.valid?
94
+ p 'poohbear must be run from a folder that is a valid git repo'
95
+ exit 1
96
+ end
97
+
98
+ # Prepare our default thing
99
+ begin
100
+ _reviewers = _gitit.config.get_value('poohbear.reviewers')
101
+ _observers = _gitit.config.get_value('poohbear.observers')
102
+ rescue
103
+ _reviewers = ''
104
+ _observers = ''
105
+ end
106
+
107
+ _current_branch = _gitit.branches.get_current_branch
108
+ _base_branch = _gitit.branches.exists_locally?('develop') ? 'develop' : 'master'
109
+
110
+ # Ask user if we have to.
111
+ if options[:auto_answer]
112
+ options[:title] = _current_branch if options[:title].nil?
113
+ options[:reviewers] = _reviewers if options[:reviewers].empty?
114
+ options[:observers] = _observers if options[:observers].empty?
115
+ options[:base_branch] = _base_branch if options[:base_branch].nil?
116
+ options[:current_branch] = _current_branch if options[:current_branch].nil?
117
+ else
118
+ options[:title] = ask('title: ') { |q| q.default = _current_branch } if options[:title].nil?
119
+ options[:reviewers] = ask('reviewers (coma separated): ') { |q| q.default = _reviewers } if options[:reviewers].empty?
120
+ options[:observers] = ask('observers: ') { |q| q.default = _observers } if options[:observers].empty?
121
+ options[:base_branch] = ask('base branch diffing against: ') { |q| q.default = _base_branch } if options[:base_branch].nil?
122
+ options[:current_branch] = ask('current branch diffed against base_branch: ') { |q| q.default = _current_branch } if options[:current_branch].nil?
123
+ end
124
+
125
+ # Create the review
126
+ begin
127
+ _codecollab = PolarBear::CodeCollab.new
128
+ new_review = PolarBear::Review.new(
129
+ :title => options[:title],
130
+ :author => _codecollab.configuration.username,
131
+ :reviewers => options[:reviewers].split(','),
132
+ :observers => options[:observers].split(',')
133
+ )
134
+ new_review.create_it!
135
+ new_review.add_git_diff(options[:base_branch], options[:current_branch])
136
+ rescue => ex
137
+ p ex.to_s
138
+ exit 1
139
+ end
140
+
141
+ # Remember our settings
142
+ _gitit.config.set_value('poohbear.reviewers', options[:reviewers])
143
+ _gitit.config.set_value('poohbear.observers', options[:observers])
144
+
145
+ p "Review successfully created. Id is: #{new_review.id}"
146
+ exit 0