git_reflow 0.8.9 → 0.8.10

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1 @@
1
+ theme: jekyll-theme-modernist
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.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"
10
+ rvm-exec 2.3.7 gem install bundler
11
+ rvm-exec 2.3.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.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"
14
+ rvm-exec 2.4.4 gem install bundler
15
+ rvm-exec 2.4.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.2.7 bundle exec rake ;; 1) rvm-exec 2.3.4 bundle exec rake ;; 2) rvm-exec ruby-head bundle exec rake ;; esac:
25
+ - case $CIRCLE_NODE_INDEX in 0) rvm-exec 2.3.7 bundle exec rake ;; 1) rvm-exec 2.4.4 bundle exec rake ;; 2) rvm-exec ruby-head bundle exec rake ;; esac:
26
26
  parallel: true
@@ -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)
@@ -14,30 +14,25 @@ Gem::Specification.new do |s|
14
14
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
15
15
  s.executables = s.files.grep(%r{^exe/}) { |f| File.basename(f) }
16
16
  s.has_rdoc = true
17
- s.extra_rdoc_files = ['README.rdoc']
18
17
  s.bindir = "exe"
19
18
  s.require_paths = ["lib"]
20
- s.rdoc_options << '--title' << 'git_reflow' << '--main' << 'README.rdoc' << '-ri'
19
+ s.rdoc_options << '--title' << 'git_reflow' << '-ri'
21
20
 
22
- s.add_development_dependency('appraisal', '2.1.0')
23
- s.add_development_dependency('bundler', "~> 1.12")
21
+ s.add_development_dependency('appraisal', '2.2.0')
22
+ s.add_development_dependency('bundler', "~> 1.16")
24
23
  s.add_development_dependency('chronic')
25
24
  s.add_development_dependency('pry-byebug')
26
- s.add_development_dependency('rake', "~> 11.0")
25
+ s.add_development_dependency('rake', "~> 12.3")
27
26
  s.add_development_dependency('rdoc')
28
- s.add_development_dependency('rspec', "~> 3.4.0")
27
+ s.add_development_dependency('rspec', "~> 3.7.0")
29
28
  s.add_development_dependency('webmock')
30
29
  s.add_development_dependency('wwtd', '1.3.0')
31
30
 
32
31
  s.add_dependency('colorize', '>= 0.7.0')
33
- s.add_dependency('gli', '2.15.0')
32
+ s.add_dependency('gli', '2.17.0')
34
33
  s.add_dependency('highline')
35
34
  s.add_dependency('httpclient')
36
35
  s.add_dependency('github_api', '0.15.0')
37
- # rack is a dependency of oauth2, which is a dependency of github_api
38
- # The latest rack only supports ruby > 2.2.2, so we lock this down until
39
- # support for ruby 2.1.x is dropped
40
- s.add_dependency('rack', ['>= 1.2', '< 2'])
41
36
  s.add_dependency('reenhanced_bitbucket_api', '0.3.2')
42
37
 
43
38
  s.post_install_message = "You need to setup your GitHub OAuth token\nPlease run 'git-reflow setup'"
@@ -22,7 +22,6 @@ require 'git_reflow/git_server/bit_bucket'
22
22
  require 'git_reflow/git_server/git_hub'
23
23
  require 'git_reflow/logger'
24
24
  require 'git_reflow/merge_error'
25
- require 'git_reflow/os_detector'
26
25
  require 'git_reflow/sandbox'
27
26
  require 'git_reflow/workflow'
28
27
  require 'git_reflow/workflows/core'
@@ -1,63 +1,63 @@
1
- module GitReflow
2
- module GitServer
3
- autoload :Base, 'git_reflow/git_server/base'
4
- autoload :GitHub, 'git_reflow/git_server/git_hub'
5
- autoload :PullRequest, 'git_reflow/git_server/pull_request'
6
-
7
- extend self
8
-
9
- class ConnectionError < StandardError; end
10
-
11
- def connect(options = {})
12
- options ||= {}
13
- options[:provider] = 'GitHub' if "#{options[:provider]}".length <= 0
14
- begin
15
- provider_name = options[:provider]
16
- provider = provider_class_for(options.delete(:provider)).new(options)
17
- provider.authenticate(options.keep_if {|key, value| key == :silent })
18
- provider
19
- rescue ConnectionError => e
20
- GitReflow.say "Error connecting to #{provider_name}: #{e.message}", :error
21
- end
22
- end
23
-
24
- def connection
25
- return nil unless current_provider
26
- current_provider.connection
27
- end
28
-
29
- def current_provider
30
- provider = "#{GitReflow::Config.get('reflow.git-server', local: true) || GitReflow::Config.get('reflow.git-server')}"
31
- if provider.length > 0
32
- begin
33
- provider_class_for(provider)
34
- rescue ConnectionError => e
35
- GitReflow.say e.message, :error
36
- nil
37
- end
38
- else
39
- GitReflow.say "Reflow hasn't been setup yet. Run 'git reflow setup' to continue", :notice
40
- nil
41
- end
42
- end
43
-
44
- def can_connect_to?(provider)
45
- GitReflow::GitServer.const_defined?(provider)
46
- end
47
-
48
- def create_pull_request(options = {})
49
- raise "#{self.class.to_s}#create_pull_request method must be implemented"
50
- end
51
-
52
- def find_open_pull_request(options = {})
53
- raise "#{self.class.to_s}#find_open_pull_request method must be implemented"
54
- end
55
-
56
- private
57
-
58
- def provider_class_for(provider)
59
- raise ConnectionError, "GitServer not setup for \"#{provider}\"" unless self.can_connect_to?(provider)
60
- GitReflow::GitServer.const_get(provider)
61
- end
62
- end
63
- end
1
+ module GitReflow
2
+ module GitServer
3
+ autoload :Base, 'git_reflow/git_server/base'
4
+ autoload :GitHub, 'git_reflow/git_server/git_hub'
5
+ autoload :PullRequest, 'git_reflow/git_server/pull_request'
6
+
7
+ extend self
8
+
9
+ class ConnectionError < StandardError; end
10
+
11
+ def connect(options = {})
12
+ options ||= {}
13
+ options[:provider] = 'GitHub' if "#{options[:provider]}".length <= 0
14
+ begin
15
+ provider_name = options[:provider]
16
+ provider = provider_class_for(options.delete(:provider)).new(options)
17
+ provider.authenticate(options.keep_if {|key, value| key == :silent })
18
+ provider
19
+ rescue ConnectionError => e
20
+ GitReflow.say "Error connecting to #{provider_name}: #{e.message}", :error
21
+ end
22
+ end
23
+
24
+ def connection
25
+ return nil unless current_provider
26
+ current_provider.connection
27
+ end
28
+
29
+ def current_provider
30
+ provider = "#{GitReflow::Config.get('reflow.git-server', local: true) || GitReflow::Config.get('reflow.git-server')}"
31
+ if provider.length > 0
32
+ begin
33
+ provider_class_for(provider)
34
+ rescue ConnectionError => e
35
+ GitReflow.say e.message, :error
36
+ nil
37
+ end
38
+ else
39
+ GitReflow.say "Reflow hasn't been setup yet. Run 'git reflow setup' to continue", :notice
40
+ nil
41
+ end
42
+ end
43
+
44
+ def can_connect_to?(provider)
45
+ GitReflow::GitServer.const_defined?(provider)
46
+ end
47
+
48
+ def create_pull_request(options = {})
49
+ raise "#{self.class.to_s}#create_pull_request method must be implemented"
50
+ end
51
+
52
+ def find_open_pull_request(options = {})
53
+ raise "#{self.class.to_s}#find_open_pull_request method must be implemented"
54
+ end
55
+
56
+ private
57
+
58
+ def provider_class_for(provider)
59
+ raise ConnectionError, "GitServer not setup for \"#{provider}\"" unless self.can_connect_to?(provider)
60
+ GitReflow::GitServer.const_get(provider)
61
+ end
62
+ end
63
+ end
@@ -1,101 +1,101 @@
1
- require 'bitbucket_rest_api'
2
- require 'git_reflow/git_helpers'
3
-
4
- module GitReflow
5
- module GitServer
6
- class BitBucket < Base
7
- require_relative 'bit_bucket/pull_request'
8
-
9
- attr_accessor :connection
10
-
11
- def initialize(config_options = {})
12
- project_only = !!config_options.delete(:project_only)
13
-
14
- # We remove any existing setup first, then setup our required config settings
15
- GitReflow::Config.unset('reflow.local-projects', value: "#{self.class.remote_user}/#{self.class.remote_repo_name}")
16
- GitReflow::Config.add('reflow.local-projects', "#{self.class.remote_user}/#{self.class.remote_repo_name}") if project_only
17
- GitReflow::Config.set('reflow.git-server', 'BitBucket', local: project_only)
18
- end
19
-
20
- def self.connection
21
- if api_key_setup?
22
- @connection ||= ::BitBucket.new login: remote_user, password: api_key
23
- end
24
- end
25
-
26
- def self.api_endpoint
27
- endpoint = GitReflow::Config.get("bitbucket.endpoint", local: project_only?)
28
- (endpoint.length > 0) ? endpoint : ::BitBucket::Configuration::DEFAULT_ENDPOINT
29
- end
30
-
31
- def self.site_url
32
- site_url = GitReflow::Config.get("bitbucket.site", local: project_only?)
33
- (site_url.length > 0) ? site_url : 'https://bitbucket.org'
34
- end
35
-
36
- def self.api_key
37
- GitReflow::Config.get("bitbucket.api-key", reload: true, local: project_only?)
38
- end
39
-
40
- def self.api_key=(key)
41
- GitReflow::Config.set("bitbucket.api-key", key, local: project_only?)
42
- end
43
- def self.api_key_setup?
44
- (self.api_key.length > 0)
45
- end
46
-
47
- def self.user
48
- GitReflow::Config.get('bitbucket.user', local: project_only?)
49
- end
50
-
51
- def self.user=(bitbucket_user)
52
- GitReflow::Config.set('bitbucket.user', bitbucket_user, local: project_only?)
53
- end
54
-
55
- def authenticate(options = {silent: false})
56
- begin
57
- if connection and self.class.api_key_setup?
58
- unless options[:silent]
59
- GitReflow.say "\nYour BitBucket account was already setup with:"
60
- GitReflow.say "\tUser Name: #{self.class.user}"
61
- end
62
- else
63
- self.class.user = options[:user] || ask("Please enter your BitBucket username: ")
64
- GitReflow.say "\nIn order to connect your BitBucket account,"
65
- GitReflow.say "you'll need to generate an API key for your team"
66
- GitReflow.say "Visit #{self.class.site_url}/account/user/#{self.class.remote_user}/api-key/, to generate it\n"
67
- self.class.api_key = ask("Please enter your team's API key: ")
68
- connection.repos.all(self.class.remote_user).count
69
- GitReflow.say "Connected to BitBucket\!", :success
70
- end
71
- rescue ::BitBucket::Error::Unauthorized => e
72
- GitReflow::Config.unset('bitbucket.api-key', local: self.class.project_only?)
73
- GitReflow.say "Invalid API key for team #{self.class.remote_user}.", :error
74
- end
75
- end
76
-
77
- def connection
78
- @connection ||= self.class.connection
79
- end
80
-
81
- def get_build_status(sha)
82
- # BitBucket does not currently support build status via API
83
- # for updates: https://bitbucket.org/site/master/issue/8548/better-ci-integration-add-a-build-status
84
- return nil
85
- end
86
-
87
- def colorized_build_description(state, description)
88
- ""
89
- end
90
-
91
- def create_pull_request(options = {})
92
- PullRequest.create(options)
93
- end
94
-
95
- def find_open_pull_request(options = {})
96
- PullRequest.find_open(options)
97
- end
98
-
99
- end
100
- end
101
- end
1
+ require 'bitbucket_rest_api'
2
+ require 'git_reflow/git_helpers'
3
+
4
+ module GitReflow
5
+ module GitServer
6
+ class BitBucket < Base
7
+ require_relative 'bit_bucket/pull_request'
8
+
9
+ attr_reader :connection
10
+
11
+ def initialize(config_options = {})
12
+ project_only = !!config_options.delete(:project_only)
13
+
14
+ # We remove any existing setup first, then setup our required config settings
15
+ GitReflow::Config.unset('reflow.local-projects', value: "#{self.class.remote_user}/#{self.class.remote_repo_name}")
16
+ GitReflow::Config.add('reflow.local-projects', "#{self.class.remote_user}/#{self.class.remote_repo_name}") if project_only
17
+ GitReflow::Config.set('reflow.git-server', 'BitBucket', local: project_only)
18
+ end
19
+
20
+ def self.connection
21
+ if api_key_setup?
22
+ @connection ||= ::BitBucket.new login: remote_user, password: api_key
23
+ end
24
+ end
25
+
26
+ def self.api_endpoint
27
+ endpoint = GitReflow::Config.get("bitbucket.endpoint", local: project_only?)
28
+ (endpoint.length > 0) ? endpoint : ::BitBucket::Configuration::DEFAULT_ENDPOINT
29
+ end
30
+
31
+ def self.site_url
32
+ site_url = GitReflow::Config.get("bitbucket.site", local: project_only?)
33
+ (site_url.length > 0) ? site_url : 'https://bitbucket.org'
34
+ end
35
+
36
+ def self.api_key
37
+ GitReflow::Config.get("bitbucket.api-key", reload: true, local: project_only?)
38
+ end
39
+
40
+ def self.api_key=(key)
41
+ GitReflow::Config.set("bitbucket.api-key", key, local: project_only?)
42
+ end
43
+ def self.api_key_setup?
44
+ (self.api_key.length > 0)
45
+ end
46
+
47
+ def self.user
48
+ GitReflow::Config.get('bitbucket.user', local: project_only?)
49
+ end
50
+
51
+ def self.user=(bitbucket_user)
52
+ GitReflow::Config.set('bitbucket.user', bitbucket_user, local: project_only?)
53
+ end
54
+
55
+ def authenticate(options = {silent: false})
56
+ begin
57
+ if connection and self.class.api_key_setup?
58
+ unless options[:silent]
59
+ GitReflow.say "\nYour BitBucket account was already setup with:"
60
+ GitReflow.say "\tUser Name: #{self.class.user}"
61
+ end
62
+ else
63
+ self.class.user = options[:user] || ask("Please enter your BitBucket username: ")
64
+ GitReflow.say "\nIn order to connect your BitBucket account,"
65
+ GitReflow.say "you'll need to generate an API key for your team"
66
+ GitReflow.say "Visit #{self.class.site_url}/account/user/#{self.class.remote_user}/api-key/, to generate it\n"
67
+ self.class.api_key = ask("Please enter your team's API key: ")
68
+ connection.repos.all(self.class.remote_user).count
69
+ GitReflow.say "Connected to BitBucket\!", :success
70
+ end
71
+ rescue ::BitBucket::Error::Unauthorized => e
72
+ GitReflow::Config.unset('bitbucket.api-key', local: self.class.project_only?)
73
+ GitReflow.say "Invalid API key for team #{self.class.remote_user}.", :error
74
+ end
75
+ end
76
+
77
+ def connection
78
+ @connection ||= self.class.connection
79
+ end
80
+
81
+ def get_build_status(sha)
82
+ # BitBucket does not currently support build status via API
83
+ # for updates: https://bitbucket.org/site/master/issue/8548/better-ci-integration-add-a-build-status
84
+ return nil
85
+ end
86
+
87
+ def colorized_build_description(state, description)
88
+ ""
89
+ end
90
+
91
+ def create_pull_request(options = {})
92
+ PullRequest.create(options)
93
+ end
94
+
95
+ def find_open_pull_request(options = {})
96
+ PullRequest.find_open(options)
97
+ end
98
+
99
+ end
100
+ end
101
+ end