git_reflow 0.8.6 → 0.8.7

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 (77) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/CHANGELOG.md +348 -348
  4. data/Gemfile.lock +13 -15
  5. data/LICENSE +20 -20
  6. data/README.rdoc +461 -461
  7. data/Rakefile +8 -8
  8. data/bin/console +7 -7
  9. data/bin/setup +6 -6
  10. data/circle.yml +5 -5
  11. data/exe/git-reflow +36 -36
  12. data/git_reflow.gemspec +1 -1
  13. data/lib/git_reflow/commands/deliver.rb +10 -10
  14. data/lib/git_reflow/commands/refresh.rb +20 -20
  15. data/lib/git_reflow/commands/review.rb +13 -13
  16. data/lib/git_reflow/commands/setup.rb +11 -11
  17. data/lib/git_reflow/commands/stage.rb +9 -9
  18. data/lib/git_reflow/commands/start.rb +22 -22
  19. data/lib/git_reflow/commands/status.rb +7 -7
  20. data/lib/git_reflow/config.rb +9 -9
  21. data/lib/git_reflow/git_server/base.rb +68 -68
  22. data/lib/git_reflow/git_server/bit_bucket/pull_request.rb +84 -84
  23. data/lib/git_reflow/git_server/bit_bucket.rb +101 -101
  24. data/lib/git_reflow/git_server/git_hub/pull_request.rb +4 -1
  25. data/lib/git_reflow/git_server/pull_request.rb +11 -2
  26. data/lib/git_reflow/git_server.rb +63 -63
  27. data/lib/git_reflow/logger.rb +49 -0
  28. data/lib/git_reflow/merge_error.rb +9 -9
  29. data/lib/git_reflow/os_detector.rb +23 -23
  30. data/lib/git_reflow/rspec/command_line_helpers.rb +12 -8
  31. data/lib/git_reflow/rspec/stub_helpers.rb +13 -13
  32. data/lib/git_reflow/rspec.rb +2 -2
  33. data/lib/git_reflow/sandbox.rb +11 -6
  34. data/lib/git_reflow/version.rb +1 -1
  35. data/lib/git_reflow/workflow.rb +59 -59
  36. data/lib/git_reflow/workflows/core.rb +238 -238
  37. data/lib/git_reflow/workflows/flat_merge.rb +10 -10
  38. data/lib/git_reflow.rb +11 -0
  39. data/spec/fixtures/awesome_workflow.rb +7 -0
  40. data/spec/fixtures/git/git_config +7 -0
  41. data/spec/fixtures/issues/comment.json.erb +27 -0
  42. data/spec/fixtures/issues/comments.json +29 -0
  43. data/spec/fixtures/issues/comments.json.erb +15 -0
  44. data/spec/fixtures/pull_requests/comment.json.erb +45 -0
  45. data/spec/fixtures/pull_requests/comments.json +47 -0
  46. data/spec/fixtures/pull_requests/comments.json.erb +15 -0
  47. data/spec/fixtures/pull_requests/commits.json +29 -0
  48. data/spec/fixtures/pull_requests/external_pull_request.json +145 -0
  49. data/spec/fixtures/pull_requests/pull_request.json +142 -0
  50. data/spec/fixtures/pull_requests/pull_request.json.erb +142 -0
  51. data/spec/fixtures/pull_requests/pull_request_exists_error.json +32 -0
  52. data/spec/fixtures/pull_requests/pull_requests.json +136 -0
  53. data/spec/fixtures/repositories/commit.json +53 -0
  54. data/spec/fixtures/repositories/commit.json.erb +53 -0
  55. data/spec/fixtures/repositories/commits.json.erb +13 -0
  56. data/spec/fixtures/repositories/statuses.json +31 -0
  57. data/spec/fixtures/workflow_with_super.rb +8 -0
  58. data/spec/lib/git_reflow/config_spec.rb +74 -0
  59. data/spec/lib/git_reflow/git_helpers_spec.rb +182 -0
  60. data/spec/lib/git_reflow/git_server/bit_bucket_spec.rb +81 -0
  61. data/spec/lib/git_reflow/git_server/git_hub/pull_request_spec.rb +587 -0
  62. data/spec/lib/git_reflow/git_server/git_hub_spec.rb +221 -0
  63. data/spec/lib/git_reflow/git_server/pull_request_spec.rb +524 -0
  64. data/spec/lib/git_reflow/git_server_spec.rb +101 -0
  65. data/spec/lib/git_reflow/logger_spec.rb +18 -0
  66. data/spec/lib/git_reflow/sandbox_spec.rb +15 -0
  67. data/spec/lib/git_reflow/workflow_spec.rb +59 -0
  68. data/spec/lib/git_reflow/workflows/core_spec.rb +665 -0
  69. data/spec/lib/git_reflow/workflows/flat_merge_spec.rb +59 -0
  70. data/spec/lib/git_reflow_spec.rb +75 -0
  71. data/spec/spec_helper.rb +38 -0
  72. data/spec/support/fake_github.rb +128 -0
  73. data/spec/support/fixtures.rb +54 -0
  74. data/spec/support/github_helpers.rb +109 -0
  75. data/spec/support/mock_pull_request.rb +17 -0
  76. data/spec/support/web_mocks.rb +39 -0
  77. metadata +83 -6
data/Rakefile CHANGED
@@ -1,8 +1,8 @@
1
- #!/usr/bin/env rake
2
- require "bundler/gem_tasks"
3
- require "rspec/core/rake_task"
4
-
5
- RSpec::Core::RakeTask.new(:spec)
6
-
7
- task :default => :spec
8
-
1
+ #!/usr/bin/env rake
2
+ require "bundler/gem_tasks"
3
+ require "rspec/core/rake_task"
4
+
5
+ RSpec::Core::RakeTask.new(:spec)
6
+
7
+ task :default => :spec
8
+
data/bin/console CHANGED
@@ -1,7 +1,7 @@
1
- #!/usr/bin/env ruby
2
-
3
- require "bundler/setup"
4
- require "git_reflow"
5
-
6
- require "irb"
7
- IRB.start
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "git_reflow"
5
+
6
+ require "irb"
7
+ IRB.start
data/bin/setup CHANGED
@@ -1,6 +1,6 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
5
-
6
- bundle install
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
data/circle.yml CHANGED
@@ -7,12 +7,12 @@ dependencies:
7
7
  - >
8
8
  case $CIRCLE_NODE_INDEX in
9
9
  0)
10
- rvm-exec 2.1.9 gem install bundler
11
- rvm-exec 2.1.9 bash -c "bundle check --path=vendor/bundle_2.1 || bundle install --path=vendor/bundle_2.1"
10
+ rvm-exec 2.2.7 gem install bundler
11
+ rvm-exec 2.2.7 bash -c "bundle check --path=vendor/bundle_2.1 || bundle install --path=vendor/bundle_2.2"
12
12
  ;;
13
13
  1)
14
- rvm-exec 2.2.5 gem install bundler
15
- rvm-exec 2.2.5 bash -c "bundle check --path=vendor/bundle_2.2 || bundle install --path=vendor/bundle_2.2"
14
+ rvm-exec 2.3.4 gem install bundler
15
+ rvm-exec 2.3.4 bash -c "bundle check --path=vendor/bundle_2.2 || bundle install --path=vendor/bundle_2.3"
16
16
  ;;
17
17
  2)
18
18
  rvm-exec ruby-head gem install bundler
@@ -22,5 +22,5 @@ dependencies:
22
22
 
23
23
  test:
24
24
  override:
25
- - case $CIRCLE_NODE_INDEX in 0) rvm-exec 2.1.9 bundle exec rake ;; 1) rvm-exec 2.2.5 bundle exec rake ;; 2) rvm-exec ruby-head bundle exec rake ;; esac:
25
+ - case $CIRCLE_NODE_INDEX in 0) rvm-exec 2.2.7 bundle exec rake ;; 1) rvm-exec 2.3.4 bundle exec rake ;; 2) rvm-exec ruby-head bundle exec rake ;; esac:
26
26
  parallel: true
data/exe/git-reflow CHANGED
@@ -1,36 +1,36 @@
1
- #!/usr/bin/env ruby
2
- $: << File.expand_path(File.dirname(File.realpath(__FILE__)) + '/../lib')
3
- require 'rubygems'
4
- require 'gli'
5
- require 'git_reflow'
6
-
7
- include GLI::App
8
-
9
- program_desc 'Git Reflow manages your git workflow.'
10
-
11
- version GitReflow::VERSION
12
-
13
- commands_from 'git_reflow/commands'
14
-
15
- pre do |global,command,options,args|
16
- # Pre logic here
17
- # Return true to proceed; false to abourt and not call the
18
- # chosen command
19
- # Use skips_pre before a command to skip this block
20
- # on that command only
21
- true
22
- end
23
-
24
- post do |global,command,options,args|
25
- # Post logic here
26
- # Use skips_post before a command to skip this
27
- # block on that command only
28
- end
29
-
30
- on_error do |exception|
31
- # Error logic here
32
- # return false to skip default error handling
33
- true
34
- end
35
-
36
- exit run(ARGV)
1
+ #!/usr/bin/env ruby
2
+ $: << File.expand_path(File.dirname(File.realpath(__FILE__)) + '/../lib')
3
+ require 'rubygems'
4
+ require 'gli'
5
+ require 'git_reflow'
6
+
7
+ include GLI::App
8
+
9
+ program_desc 'Git Reflow manages your git workflow.'
10
+
11
+ version GitReflow::VERSION
12
+
13
+ commands_from 'git_reflow/commands'
14
+
15
+ pre do |global,command,options,args|
16
+ # Pre logic here
17
+ # Return true to proceed; false to abourt and not call the
18
+ # chosen command
19
+ # Use skips_pre before a command to skip this block
20
+ # on that command only
21
+ true
22
+ end
23
+
24
+ post do |global,command,options,args|
25
+ # Post logic here
26
+ # Use skips_post before a command to skip this
27
+ # block on that command only
28
+ end
29
+
30
+ on_error do |exception|
31
+ # Error logic here
32
+ # return false to skip default error handling
33
+ true
34
+ end
35
+
36
+ exit run(ARGV)
data/git_reflow.gemspec CHANGED
@@ -30,7 +30,7 @@ Gem::Specification.new do |s|
30
30
  s.add_development_dependency('wwtd', '1.3.0')
31
31
 
32
32
  s.add_dependency('colorize', '>= 0.7.0')
33
- s.add_dependency('gli', '2.14.0')
33
+ s.add_dependency('gli', '2.15.0')
34
34
  s.add_dependency('highline')
35
35
  s.add_dependency('httpclient')
36
36
  s.add_dependency('github_api', '0.15.0')
@@ -1,10 +1,10 @@
1
- desc 'deliver your feature branch'
2
- long_desc 'merge your feature branch down to your base branch, and cleanup your feature branch'
3
-
4
- command :deliver do |c|
5
- c.desc 'merge your feature branch down to your base branch, and cleanup your feature branch'
6
- c.switch [:f, :'skip-lgtm'], desc: 'skip the lgtm checks and deliver your feature branch'
7
- c.action do |global_options, options, args|
8
- GitReflow.deliver base: args[0], force: options[:'skip-lgtm']
9
- end
10
- end
1
+ desc 'deliver your feature branch'
2
+ long_desc 'merge your feature branch down to your base branch, and cleanup your feature branch'
3
+
4
+ command :deliver do |c|
5
+ c.desc 'merge your feature branch down to your base branch, and cleanup your feature branch'
6
+ c.switch [:f, :'skip-lgtm'], desc: 'skip the lgtm checks and deliver your feature branch'
7
+ c.action do |global_options, options, args|
8
+ GitReflow.deliver base: args[0], force: options[:'skip-lgtm']
9
+ end
10
+ end
@@ -1,20 +1,20 @@
1
- desc 'Updates and synchronizes your base branch and feature branch.'
2
- long_desc <<LONGTIME
3
- Performs the following:\n
4
- \t$ git checkout <base_branch>\n
5
- \t$ git pull <remote_location> <base_branch>\n
6
- \t$ git checkout <current_branch>\n
7
- \t$ git pull origin <current_branch>\n
8
- \t$ git merge <base_branch>\n
9
- LONGTIME
10
- arg_name '[remote_location] - remote repository name to fetch updates from (origin by default), [base_branch] - branch that you want to merge with (master by default)'
11
- command :refresh do |c|
12
- c.desc 'updates base_branch based on remote and merges the base with your feature_branch'
13
- c.flag [:r,:remote], default_value: 'origin'
14
- c.flag [:b,:base], default_value: 'master'
15
- c.action do |global_options, options, args|
16
-
17
- GitReflow.refresh base: options[:base], remote: options[:remote]
18
-
19
- end
20
- end
1
+ desc 'Updates and synchronizes your base branch and feature branch.'
2
+ long_desc <<LONGTIME
3
+ Performs the following:\n
4
+ \t$ git checkout <base_branch>\n
5
+ \t$ git pull <remote_location> <base_branch>\n
6
+ \t$ git checkout <current_branch>\n
7
+ \t$ git pull origin <current_branch>\n
8
+ \t$ git merge <base_branch>\n
9
+ LONGTIME
10
+ arg_name '[remote_location] - remote repository name to fetch updates from (origin by default), [base_branch] - branch that you want to merge with (master by default)'
11
+ command :refresh do |c|
12
+ c.desc 'updates base_branch based on remote and merges the base with your feature_branch'
13
+ c.flag [:r,:remote], default_value: 'origin'
14
+ c.flag [:b,:base], default_value: 'master'
15
+ c.action do |global_options, options, args|
16
+
17
+ GitReflow.refresh base: options[:base], remote: options[:remote]
18
+
19
+ end
20
+ end
@@ -1,13 +1,13 @@
1
- desc 'review will push your latest feature branch changes to your remote repo and create a pull request'
2
- arg_name 'Describe arguments to review here'
3
- command :review do |c|
4
- c.desc 'push your latest feature branch changes to your remote repo and create a pull request against the destination branch'
5
- c.arg_name '[destination_branch] - the branch you want to merge your feature branch into'
6
- c.flag [:t, :title]
7
- c.flag [:m, :message]
8
- c.action do |global_options,options,args|
9
-
10
- GitReflow.review base: args[0], title: options[:title], body: options[:message]
11
-
12
- end
13
- end
1
+ desc 'review will push your latest feature branch changes to your remote repo and create a pull request'
2
+ arg_name 'Describe arguments to review here'
3
+ command :review do |c|
4
+ c.desc 'push your latest feature branch changes to your remote repo and create a pull request against the destination branch'
5
+ c.arg_name '[destination_branch] - the branch you want to merge your feature branch into'
6
+ c.flag [:t, :title]
7
+ c.flag [:m, :message]
8
+ c.action do |global_options,options,args|
9
+
10
+ GitReflow.review base: args[0], title: options[:title], body: options[:message]
11
+
12
+ end
13
+ end
@@ -1,11 +1,11 @@
1
- desc 'Setup your GitHub account'
2
- command :setup do |c|
3
- c.desc 'sets up your api token with GitHub'
4
- c.switch [:l, :local], default_value: false, desc: 'setup GitReflow for the current project only'
5
- c.switch [:e, :enterprise], default_value: false, desc: 'setup GitReflow with a Github Enterprise account'
6
- c.action do |global_options, options, args|
7
-
8
- GitReflow.setup local: options[:local], enterprise: options[:enterprise]
9
-
10
- end
11
- end
1
+ desc 'Setup your GitHub account'
2
+ command :setup do |c|
3
+ c.desc 'sets up your api token with GitHub'
4
+ c.switch [:l, :local], default_value: false, desc: 'setup GitReflow for the current project only'
5
+ c.switch [:e, :enterprise], default_value: false, desc: 'setup GitReflow with a Github Enterprise account'
6
+ c.action do |global_options, options, args|
7
+
8
+ GitReflow.setup local: options[:local], enterprise: options[:enterprise]
9
+
10
+ end
11
+ end
@@ -1,9 +1,9 @@
1
- desc 'Deliver your changes to a staging server'
2
- command :stage do |c|
3
- c.desc 'deliver your feature branch to the staging branch'
4
- c.action do |global_options, options, args|
5
-
6
- GitReflow.stage
7
-
8
- end
9
- end
1
+ desc 'Deliver your changes to a staging server'
2
+ command :stage do |c|
3
+ c.desc 'deliver your feature branch to the staging branch'
4
+ c.action do |global_options, options, args|
5
+
6
+ GitReflow.stage
7
+
8
+ end
9
+ end
@@ -1,22 +1,22 @@
1
-
2
- desc 'Start will create a new feature branch and setup remote tracking'
3
- long_desc <<LONGTIME
4
- Performs the following:\n
5
- \t$ git checkout <base_branch>\n
6
- \t$ git pull origin <base_branch>\n
7
- \t$ git push origin <base_branch>:refs/heads/[new_feature_branch]\n
8
- \t$ git checkout --track -b [new_feature_branch] origin/[new_feature_branch]\n
9
- LONGTIME
10
- arg_name '[new-feature-branch-name] - name of the new feature branch'
11
- command :start do |c|
12
- c.flag [:b,:base], default_value: 'master'
13
- c.action do |global_options, options, args|
14
-
15
- if args.empty?
16
- raise "usage: git-reflow start [new-branch-name]"
17
- else
18
- GitReflow.start feature_branch: args[0], base: options[:base]
19
- end
20
-
21
- end
22
- end
1
+
2
+ desc 'Start will create a new feature branch and setup remote tracking'
3
+ long_desc <<LONGTIME
4
+ Performs the following:\n
5
+ \t$ git checkout <base_branch>\n
6
+ \t$ git pull origin <base_branch>\n
7
+ \t$ git push origin <base_branch>:refs/heads/[new_feature_branch]\n
8
+ \t$ git checkout --track -b [new_feature_branch] origin/[new_feature_branch]\n
9
+ LONGTIME
10
+ arg_name '[new-feature-branch-name] - name of the new feature branch'
11
+ command :start do |c|
12
+ c.flag [:b,:base], default_value: 'master'
13
+ c.action do |global_options, options, args|
14
+
15
+ if args.empty?
16
+ raise "usage: git-reflow start [new-branch-name]"
17
+ else
18
+ GitReflow.start feature_branch: args[0], base: options[:base]
19
+ end
20
+
21
+ end
22
+ end
@@ -1,7 +1,7 @@
1
- desc 'Display information about the status of your feature in the review process'
2
- arg_name "destination_branch - the branch you're merging your feature into ('master' is default)"
3
- command :status do |c|
4
- c.action do |global_options, options, args|
5
- GitReflow.status destination_branch: args[0]
6
- end
7
- end
1
+ desc 'Display information about the status of your feature in the review process'
2
+ arg_name "destination_branch - the branch you're merging your feature into ('master' is default)"
3
+ command :status do |c|
4
+ c.action do |global_options, options, args|
5
+ GitReflow.status destination_branch: args[0]
6
+ end
7
+ end
@@ -10,9 +10,9 @@ module GitReflow
10
10
  else
11
11
  local = local ? '--local ' : ''
12
12
  if all
13
- new_value = GitReflow::Sandbox.run "git config #{local}--get-all #{key}", loud: false
13
+ new_value = GitReflow::Sandbox.run "git config #{local}--get-all #{key}", loud: false, blocking: false
14
14
  else
15
- new_value = GitReflow::Sandbox.run "git config #{local}--get #{key}", loud: false
15
+ new_value = GitReflow::Sandbox.run "git config #{local}--get #{key}", loud: false, blocking: false
16
16
  end
17
17
  instance_variable_set(:"@#{key.tr('.-', '_')}", new_value.strip)
18
18
  end
@@ -21,28 +21,28 @@ module GitReflow
21
21
  def set(key, value, local: false)
22
22
  value = "#{value}".strip
23
23
  if local
24
- GitReflow::Sandbox.run "git config --replace-all #{key} \"#{value}\"", loud: false
24
+ GitReflow::Sandbox.run "git config --replace-all #{key} \"#{value}\"", loud: false, blocking: false
25
25
  else
26
- GitReflow::Sandbox.run "git config -f #{CONFIG_FILE_PATH} --replace-all #{key} \"#{value}\"", loud: false
26
+ GitReflow::Sandbox.run "git config -f #{CONFIG_FILE_PATH} --replace-all #{key} \"#{value}\"", loud: false, blocking: false
27
27
  end
28
28
  end
29
29
 
30
30
  def unset(key, value: nil, local: false)
31
31
  value = (value.nil?) ? "" : "\"#{value}\""
32
32
  if local
33
- GitReflow::Sandbox.run "git config --unset-all #{key} #{value}", loud: false
33
+ GitReflow::Sandbox.run "git config --unset-all #{key} #{value}", loud: false, blocking: false
34
34
  else
35
- GitReflow::Sandbox.run "git config -f #{CONFIG_FILE_PATH} --unset-all #{key} #{value}", loud: false
35
+ GitReflow::Sandbox.run "git config -f #{CONFIG_FILE_PATH} --unset-all #{key} #{value}", loud: false, blocking: false
36
36
  end
37
37
  end
38
38
 
39
39
  def add(key, value, local: false, global: false)
40
40
  if global
41
- GitReflow::Sandbox.run "git config --global --add #{key} \"#{value}\"", loud: false
41
+ GitReflow::Sandbox.run "git config --global --add #{key} \"#{value}\"", loud: false, blocking: false
42
42
  elsif local
43
- GitReflow::Sandbox.run "git config --add #{key} \"#{value}\"", loud: false
43
+ GitReflow::Sandbox.run "git config --add #{key} \"#{value}\"", loud: false, blocking: false
44
44
  else
45
- GitReflow::Sandbox.run "git config -f #{CONFIG_FILE_PATH} --add #{key} \"#{value}\"", loud: false
45
+ GitReflow::Sandbox.run "git config -f #{CONFIG_FILE_PATH} --add #{key} \"#{value}\"", loud: false, blocking: false
46
46
  end
47
47
  end
48
48
  end
@@ -1,68 +1,68 @@
1
- require 'git_reflow/config'
2
-
3
- module GitReflow
4
- class GitServer::Base
5
- extend GitHelpers
6
-
7
- @@connection = nil
8
-
9
- def initialize(options)
10
- site_url = self.class.site_url
11
- api_endpoint = self.class.api_endpoint
12
-
13
- self.class.site_url = site_url
14
- self.class.api_endpoint = api_endpoint
15
-
16
- authenticate
17
- end
18
-
19
- def self.connection
20
- raise "#{self.class.to_s}.connection method must be implemented"
21
- end
22
-
23
- def self.user
24
- raise "#{self.class.to_s}.user method must be implemented"
25
- end
26
-
27
- def self.api_endpoint
28
- raise "#{self.class.to_s}.api_endpoint method must be implemented"
29
- end
30
-
31
- def self.api_endpoint=(api_endpoint, options = {local: false})
32
- raise "#{self.class.to_s}.api_endpoint= method must be implemented"
33
- end
34
-
35
- def self.site_url
36
- raise "#{self.class.to_s}.site_url method must be implemented"
37
- end
38
-
39
- def self.site_url=(site_url, options = {local: false})
40
- raise "#{self.class.to_s}.site_url= method must be implemented"
41
- end
42
-
43
- def self.project_only?
44
- GitReflow::Config.get("reflow.local-projects", all: true).include? "#{remote_user}/#{remote_repo_name}"
45
- end
46
-
47
- def connection
48
- @connection ||= self.class.connection
49
- end
50
-
51
- def authenticate
52
- raise "#{self.class.to_s}#authenticate method must be implemented"
53
- end
54
-
55
- def find_open_pull_request(options)
56
- raise "#{self.class.to_s}#find_open_pull_request(options) method must be implemented"
57
- end
58
-
59
- def get_build_status sha
60
- raise "#{self.class.to_s}#get_build_status(sha) method must be implemented"
61
- end
62
-
63
- def colorized_build_description status
64
- raise "#{self.class.to_s}#colorized_build_description(status) method must be implemented"
65
- end
66
-
67
- end
68
- end
1
+ require 'git_reflow/config'
2
+
3
+ module GitReflow
4
+ class GitServer::Base
5
+ extend GitHelpers
6
+
7
+ @@connection = nil
8
+
9
+ def initialize(options)
10
+ site_url = self.class.site_url
11
+ api_endpoint = self.class.api_endpoint
12
+
13
+ self.class.site_url = site_url
14
+ self.class.api_endpoint = api_endpoint
15
+
16
+ authenticate
17
+ end
18
+
19
+ def self.connection
20
+ raise "#{self.class.to_s}.connection method must be implemented"
21
+ end
22
+
23
+ def self.user
24
+ raise "#{self.class.to_s}.user method must be implemented"
25
+ end
26
+
27
+ def self.api_endpoint
28
+ raise "#{self.class.to_s}.api_endpoint method must be implemented"
29
+ end
30
+
31
+ def self.api_endpoint=(api_endpoint, options = {local: false})
32
+ raise "#{self.class.to_s}.api_endpoint= method must be implemented"
33
+ end
34
+
35
+ def self.site_url
36
+ raise "#{self.class.to_s}.site_url method must be implemented"
37
+ end
38
+
39
+ def self.site_url=(site_url, options = {local: false})
40
+ raise "#{self.class.to_s}.site_url= method must be implemented"
41
+ end
42
+
43
+ def self.project_only?
44
+ GitReflow::Config.get("reflow.local-projects", all: true).include? "#{remote_user}/#{remote_repo_name}"
45
+ end
46
+
47
+ def connection
48
+ @connection ||= self.class.connection
49
+ end
50
+
51
+ def authenticate
52
+ raise "#{self.class.to_s}#authenticate method must be implemented"
53
+ end
54
+
55
+ def find_open_pull_request(options)
56
+ raise "#{self.class.to_s}#find_open_pull_request(options) method must be implemented"
57
+ end
58
+
59
+ def get_build_status sha
60
+ raise "#{self.class.to_s}#get_build_status(sha) method must be implemented"
61
+ end
62
+
63
+ def colorized_build_description status
64
+ raise "#{self.class.to_s}#colorized_build_description(status) method must be implemented"
65
+ end
66
+
67
+ end
68
+ end