git_reflow 0.9.0 → 0.9.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,3 @@
1
1
  module GitReflow
2
- VERSION = "0.9.0"
2
+ VERSION = "0.9.5"
3
3
  end
@@ -1,5 +1,6 @@
1
1
  require 'git_reflow/sandbox'
2
2
  require 'git_reflow/git_helpers'
3
+ require 'bundler/inline'
3
4
 
4
5
  module GitReflow
5
6
  module Workflow
@@ -80,6 +81,32 @@ module GitReflow
80
81
  GitReflow.logger
81
82
  end
82
83
 
84
+ # Checks for an installed gem, and if none is installed use bundler's
85
+ # inline gemfile to install it.
86
+ #
87
+ # @param name [String] the name of the gem to require as a dependency
88
+ def use_gem(name, *args)
89
+ run("gem list -ie #{name}", loud: false, raise: true)
90
+ logger.info "Using installed gem '#{name}' with options: #{args.inspect}"
91
+ rescue ::GitReflow::Sandbox::CommandError => e
92
+ abort e.message unless e.output =~ /\Afalse/
93
+ logger.info "Installing gem '#{name}' with options: #{args.inspect}"
94
+ say "Installing gem '#{name}'...", :notice
95
+ gemfile do
96
+ source "https://rubygems.org"
97
+ gem name, *args
98
+ end
99
+ end
100
+
101
+ # Use bundler's inline gemfile to install dependencies.
102
+ # See: https://bundler.io/v1.16/guides/bundler_in_a_single_file_ruby_script.html
103
+ #
104
+ # @yield A block to be executed in the context of Bundler's `gemfile` DSL
105
+ def use_gemfile(&block)
106
+ logger.info "Using a custom gemfile"
107
+ gemfile(true, &block)
108
+ end
109
+
83
110
  # Loads a pre-defined workflow (FlatMergeWorkflow) from within another
84
111
  # Workflow file
85
112
  #
@@ -105,7 +132,7 @@ module GitReflow
105
132
  @workflows
106
133
  end
107
134
 
108
- # Creates a singleton method on the inlcuded class
135
+ # Creates a singleton method on the included class
109
136
  #
110
137
  # This method will take any number of keyword parameters. If @defaults keyword is provided, and the given
111
138
  # key(s) in the defaults are not provided as keyword parameters, then it will use the value given in the
@@ -130,7 +157,7 @@ module GitReflow
130
157
  self.commands[name] = params
131
158
  self.command_docs[name] = params
132
159
 
133
- self.define_singleton_method(name) do |**args|
160
+ self.define_singleton_method(name) do |args = {}|
134
161
  args_with_defaults = {}
135
162
  args.each do |name, value|
136
163
  if "#{value}".length <= 0 && !defaults[name].nil?
@@ -153,7 +180,7 @@ module GitReflow
153
180
  args_with_defaults.merge!(argument_overrides) if argument_overrides.is_a?(Hash)
154
181
  end
155
182
 
156
- GitReflow.logger.debug "Running command `#{name}` with args: #{args_with_defaults.inspect}..."
183
+ GitReflow.logger.info "Running command `#{name}` with args: #{args_with_defaults.inspect}..."
157
184
  block.call(**args_with_defaults)
158
185
 
159
186
  Array(callbacks[:after][name]).each do |block|
@@ -203,7 +230,7 @@ module GitReflow
203
230
  end
204
231
  end
205
232
 
206
- # Creates a singleton method on the inlcuded class
233
+ # Creates a singleton method on the included class
207
234
  #
208
235
  # This method updates the help text associated with the provided command.
209
236
  #
@@ -0,0 +1,3 @@
1
+ {
2
+ "error" : "GET https://api.github.com/authorizations: 401 Bad credentials"
3
+ }
@@ -0,0 +1,32 @@
1
+ {
2
+ "login": "reenhanced",
3
+ "id": 1,
4
+ "avatar_url": "https://github.com/images/error/octocat_happy.gif",
5
+ "gravatar_id": "somehexcode",
6
+ "url": "https://api.github.com/users/reenhanced",
7
+ "name": "monalisa octocat",
8
+ "company": "GitHub",
9
+ "blog": "https://github.com/blog",
10
+ "location": "San Francisco",
11
+ "email": "octocat@github.com",
12
+ "hireable": false,
13
+ "bio": "There once was...",
14
+ "public_repos": 2,
15
+ "public_gists": 1,
16
+ "followers": 20,
17
+ "following": 0,
18
+ "html_url": "https://github.com/reenhanced",
19
+ "created_at": "2008-01-14T04:33:35Z",
20
+ "type": "User",
21
+ "total_private_repos": 100,
22
+ "owned_private_repos": 100,
23
+ "private_gists": 81,
24
+ "disk_usage": 10000,
25
+ "collaborators": 8,
26
+ "plan": {
27
+ "name": "Medium",
28
+ "space": 400,
29
+ "collaborators": 10,
30
+ "private_repos": 20
31
+ }
32
+ }
@@ -100,7 +100,7 @@ describe GitReflow::GitServer::GitHub::PullRequest do
100
100
  context "Testing Nil Comments" do
101
101
  before do
102
102
  stub_request(:get, "https://api.github.com/repos/reenhanced/repo/pulls/2/comments?access_token=a1b2c3d4e5f6g7h8i9j0").
103
- with(:headers => {'Accept'=>'application/vnd.github.v3+json,application/vnd.github.beta+json;q=0.5,application/json;q=0.1', 'Accept-Charset'=>'utf-8', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'token a1b2c3d4e5f6g7h8i9j0', 'User-Agent'=>'Github API Ruby Gem 0.18.2'}).
103
+ with(:headers => {'Accept'=>'application/vnd.github.v3+json,application/vnd.github.beta+json;q=0.5,application/json;q=0.1', 'Accept-Charset'=>'utf-8', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'token a1b2c3d4e5f6g7h8i9j0', 'User-Agent'=>'Github API Ruby Gem 0.19.0'}).
104
104
  to_return(:status => 200, :body => "", :headers => {})
105
105
 
106
106
  FakeGitHub.new(
@@ -78,7 +78,7 @@ describe GitReflow::GitServer::GitHub do
78
78
  subject { github.authenticate }
79
79
 
80
80
  before do
81
- allow(GitReflow::GitServer::GitHub).to receive(:user).and_return('reenhanced')
81
+ allow(GitReflow::GitServer::GitHub).to receive(:user).and_return(user)
82
82
  allow(github_api).to receive(:oauth).and_return(github_authorizations)
83
83
  allow(github_api).to receive_message_chain(:oauth, :all).and_return([])
84
84
  allow(github).to receive(:run).with('hostname', loud: false).and_return(hostname)
@@ -151,12 +151,86 @@ describe GitReflow::GitServer::GitHub do
151
151
  body: { error: "GET https://api.github.com/authorizations: 401 Bad credentials" }
152
152
  }}
153
153
 
154
+ before do
155
+ allow(GitReflow::Config).to receive(:get).and_call_original
156
+ allow(GitReflow::Config).to receive(:get).with('github.oauth-token').and_return(oauth_token_hash[:token])
157
+ allow(Github::Client).to receive(:new).and_return(github_api)
158
+ allow(github_authorizations).to receive(:authenticated?).and_return(true)
159
+ allow(github_api.oauth).to receive(:create).with({ scopes: ['repo'], note: "git-reflow (#{hostname})" }).and_return(oauth_token_hash)
160
+
161
+ stub_request(:get, %r{/user}).
162
+ to_return(
163
+ body: Fixture.new('authentication_failure.json').to_s,
164
+ status: 401,
165
+ headers: {'content-type' => 'application/json; charset=utf-8', status: 'Unauthorized'},
166
+ )
167
+ end
168
+
169
+ it "notifies the user of successful setup" do
170
+ expect { subject }.to have_said "Your GitHub account was successfully setup!", :success
171
+ end
172
+
173
+ it "creates a new GitHub oauth token" do
174
+ expect(github_api.oauth).to receive(:create).and_return(oauth_token_hash)
175
+ subject
176
+ end
177
+
178
+ it "creates git config keys for github connections" do
179
+ expect{ subject }.to have_run_command_silently "git config -f #{GitReflow::Config::CONFIG_FILE_PATH} --replace-all github.site \"#{github_site}\"", blocking: false
180
+ expect{ subject }.to have_run_command_silently "git config -f #{GitReflow::Config::CONFIG_FILE_PATH} --replace-all github.endpoint \"#{github_api_endpoint}\"", blocking: false
181
+ expect{ subject }.to have_run_command_silently "git config -f #{GitReflow::Config::CONFIG_FILE_PATH} --replace-all github.oauth-token \"#{oauth_token_hash[:token]}\"", blocking: false
182
+ expect{ subject }.to have_run_command_silently "git config -f #{GitReflow::Config::CONFIG_FILE_PATH} --replace-all reflow.git-server \"GitHub\"", blocking: false
183
+ end
184
+
185
+ end
186
+ end
187
+
188
+ context 'already authenticated' do
189
+ let(:oauth_token) { "abc123" }
190
+
191
+ before do
192
+ allow(GitReflow::Config).to receive(:get).and_call_original
193
+ allow(GitReflow::Config).to receive(:get).with('github.oauth-token').and_return(oauth_token)
194
+ end
195
+
196
+ context "and authentication token is still valid" do
197
+ before do
198
+ stub_request(:get, %r{/user}).
199
+ to_return(
200
+ body: Fixture.new('users/user.json').to_s,
201
+ status: 200,
202
+ headers: { content_type: "application/json; charset=utf-8" }
203
+ )
204
+
205
+ allow(Github::Client).to receive(:new).and_return(github_api)
206
+ allow(github_api).to receive(:oauth).and_return(github_authorizations)
207
+ allow(github_authorizations).to receive(:authenticated?).and_return(true)
208
+ allow(github_api.oauth).to receive(:create).with({ scopes: ['repo'], note: "git-reflow (#{hostname})" }).and_return(oauth_token_hash)
209
+ end
210
+
211
+ it "resolves all missing git-reflow configurations" do
212
+ expect{ subject }.to have_run_command_silently "git config -f #{GitReflow::Config::CONFIG_FILE_PATH} --replace-all github.site \"#{github_site}\"", blocking: false
213
+ expect{ subject }.to have_run_command_silently "git config -f #{GitReflow::Config::CONFIG_FILE_PATH} --replace-all github.endpoint \"#{github_api_endpoint}\"", blocking: false
214
+ expect{ subject }.to have_run_command_silently "git config -f #{GitReflow::Config::CONFIG_FILE_PATH} --replace-all reflow.git-server \"GitHub\"", blocking: false
215
+ expect { subject }.to have_said "Your GitHub account was already setup with: "
216
+ expect { subject }.to have_said "\tUser Name: #{user}"
217
+ expect { subject }.to have_said "\tEndpoint: #{github_api_endpoint}"
218
+ end
219
+ end
220
+
221
+ context "and authentication token is expired" do
222
+ let(:unauthorized_error_response) {{
223
+ response_headers: {'content-type' => 'application/json; charset=utf-8', status: 'Unauthorized'},
224
+ method: 'GET',
225
+ status: '401',
226
+ body: { error: "GET https://api.github.com/authorizations: 401 Bad credentials" }
227
+ }}
228
+
154
229
  before do
155
230
  allow(Github::Client).to receive(:new).and_raise Github::Error::Unauthorized.new(unauthorized_error_response)
156
231
  end
157
232
 
158
- it "notifies user of invalid login details" do
159
- expect { subject }.to have_said "Github Authentication Error: #{Github::Error::Unauthorized.new(unauthorized_error_response).inspect}", :error
233
+ it "requests a new oauth token" do
160
234
  end
161
235
  end
162
236
  end
@@ -491,14 +491,42 @@ describe GitReflow::GitServer::PullRequest do
491
491
  allow(GitReflow::Config).to receive(:get).with('reflow.always-cleanup').and_return('false')
492
492
  end
493
493
 
494
- context "and user chooses to cleanup" do
495
- before { expect(pr).to receive(:ask).with('Would you like to push this branch to your remote repo and cleanup your feature branch? ').and_return('yes') }
494
+ context "and always cleanup local config is set" do
495
+ end
496
+
497
+ context "and always cleanup remote config is set" do
498
+ end
499
+
500
+ context "and user chooses to cleanup local only" do
501
+ before do
502
+ expect(pr).to receive(:ask).with('Would you like to cleanup your local feature branch? ').and_return('yes')
503
+ allow(pr).to receive(:ask).with('Would you like to cleanup your remote feature branch? ').and_return('no')
504
+ end
505
+ it { should be_truthy }
506
+ end
507
+
508
+ context "and user chooses to cleanup remote only" do
509
+ before do
510
+ expect(pr).to receive(:ask).with('Would you like to cleanup your local feature branch? ').and_return('no')
511
+ expect(pr).to receive(:ask).with('Would you like to cleanup your remote feature branch? ').and_return('yes')
512
+ end
496
513
  it { should be_truthy }
497
514
  end
498
515
 
499
- context "and user chooses not to cleanup" do
500
- before { expect(pr).to receive(:ask).with('Would you like to push this branch to your remote repo and cleanup your feature branch? ').and_return('no') }
501
- it { should be_falsy }
516
+ context "and user chooses to cleanup local and remote" do
517
+ before do
518
+ allow(pr).to receive(:ask).with('Would you like to cleanup your local feature branch? ').and_return('yes')
519
+ allow(pr).to receive(:ask).with('Would you like to cleanup your remote feature branch? ').and_return('yes')
520
+ end
521
+ it { should be_truthy }
522
+ end
523
+
524
+ context "and user chooses to cleanup neither local nor remote" do
525
+ before do
526
+ expect(pr).to receive(:ask).with('Would you like to cleanup your local feature branch? ').and_return('no')
527
+ allow(pr).to receive(:ask).with('Would you like to cleanup your remote feature branch? ').and_return('no')
528
+ end
529
+ it { should be_falsey }
502
530
  end
503
531
  end
504
532
  end
@@ -6,6 +6,23 @@ describe GitReflow::Workflow do
6
6
  include GitReflow::Workflow
7
7
  end
8
8
 
9
+ class DummyBundler
10
+ def gemfile(&block)
11
+ instance_eval &block
12
+ end
13
+
14
+ def source(name); end
15
+ def gem(name, *args); end
16
+ end
17
+
18
+ class DummyGemifiedWorkflow
19
+ include GitReflow::Workflow
20
+
21
+ command :whirl do
22
+ puts "whirl"
23
+ end
24
+ end
25
+
9
26
  let(:workflow) { DummyWorkflow }
10
27
  let(:loader) { double() }
11
28
 
@@ -164,9 +181,6 @@ describe GitReflow::Workflow do
164
181
 
165
182
  describe ".command" do
166
183
  it "creates a class method for a bogus command" do
167
- class DummyWorkflow
168
- include GitReflow::Workflow
169
- end
170
184
  workflow.command :bogus do
171
185
  GitReflow.say "Woohoo"
172
186
  end
@@ -235,4 +249,56 @@ describe GitReflow::Workflow do
235
249
  end
236
250
  end
237
251
 
252
+ describe ".use_gem(name, *ags)" do
253
+ let(:mock_bundler) { DummyBundler.new }
254
+
255
+ before do
256
+ allow(DummyGemifiedWorkflow).to receive(:gemfile) do |&block|
257
+ mock_bundler.gemfile(&block)
258
+ end
259
+ stub_run_for(DummyGemifiedWorkflow)
260
+ end
261
+
262
+ it "Installs a gem using Bundler's inline gemfile" do
263
+ stub_command(command: "gem list -ie whirly", options: { loud: false, raise: true }, return_value: "false")
264
+ expect(mock_bundler).to receive(:source).with("https://rubygems.org")
265
+ expect(mock_bundler).to receive(:gem).with("whirly", "0.2.6")
266
+
267
+ DummyGemifiedWorkflow.class_eval do
268
+ use_gem "whirly", "0.2.6"
269
+ end
270
+ end
271
+
272
+ it "Uses an existing gem if it's already installed" do
273
+ stub_command(command: "gem list -ie whirly", options: { loud: false, raise: false }, return_value: "true")
274
+ expect(DummyGemifiedWorkflow).to_not receive(:gemfile)
275
+
276
+ DummyGemifiedWorkflow.class_eval do
277
+ use_gem "whirly", "0.2.6"
278
+ end
279
+ end
280
+ end
281
+
282
+ describe ".use_gemfile(&block)" do
283
+ let(:mock_bundler) { DummyBundler.new }
284
+
285
+ before do
286
+ allow(DummyGemifiedWorkflow).to receive(:gemfile) do |&block|
287
+ mock_bundler.gemfile(&block)
288
+ end
289
+ stub_run_for(DummyGemifiedWorkflow)
290
+ end
291
+
292
+ it "runs bundler's inline gemfile with the provided block" do
293
+ expect(mock_bundler).to receive(:source).with("https://rubygems.org")
294
+ expect(mock_bundler).to receive(:gem).with("standard")
295
+
296
+ DummyGemifiedWorkflow.class_eval do
297
+ use_gemfile do
298
+ source "https://rubygems.org"
299
+ gem "standard"
300
+ end
301
+ end
302
+ end
303
+ end
238
304
  end
@@ -1,7 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe GitReflow do
4
-
5
4
  describe ".logger" do
6
5
  # Ignore memoization for tests
7
6
  before { GitReflow.instance_variable_set("@logger", nil) }
data/spec/spec_helper.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  require 'rubygems'
2
2
  require 'rspec'
3
+ require 'ruby_jard'
3
4
  require 'multi_json'
4
5
  require 'webmock/rspec'
5
- require 'pry'
6
6
 
7
7
  $LOAD_PATH << 'lib'
8
8
  require 'git_reflow'
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git_reflow
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.9.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Valentino Stoll
8
8
  - Robert Stern
9
9
  - Nicholas Hance
10
- autorequire:
10
+ autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2018-11-09 00:00:00.000000000 Z
13
+ date: 2021-03-25 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: appraisal
@@ -18,30 +18,30 @@ dependencies:
18
18
  requirements:
19
19
  - - '='
20
20
  - !ruby/object:Gem::Version
21
- version: 2.2.0
21
+ version: 2.4.0
22
22
  type: :development
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - '='
27
27
  - !ruby/object:Gem::Version
28
- version: 2.2.0
28
+ version: 2.4.0
29
29
  - !ruby/object:Gem::Dependency
30
- name: bundler
30
+ name: chronic
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
- - - "~>"
33
+ - - ">="
34
34
  - !ruby/object:Gem::Version
35
- version: '1.16'
35
+ version: '0'
36
36
  type: :development
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
- - - "~>"
40
+ - - ">="
41
41
  - !ruby/object:Gem::Version
42
- version: '1.16'
42
+ version: '0'
43
43
  - !ruby/object:Gem::Dependency
44
- name: chronic
44
+ name: github_changelog_generator
45
45
  requirement: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - ">="
@@ -55,7 +55,7 @@ dependencies:
55
55
  - !ruby/object:Gem::Version
56
56
  version: '0'
57
57
  - !ruby/object:Gem::Dependency
58
- name: pry-byebug
58
+ name: ruby_jard
59
59
  requirement: !ruby/object:Gem::Requirement
60
60
  requirements:
61
61
  - - ">="
@@ -74,14 +74,14 @@ dependencies:
74
74
  requirements:
75
75
  - - "~>"
76
76
  - !ruby/object:Gem::Version
77
- version: '12.3'
77
+ version: 13.0.3
78
78
  type: :development
79
79
  prerelease: false
80
80
  version_requirements: !ruby/object:Gem::Requirement
81
81
  requirements:
82
82
  - - "~>"
83
83
  - !ruby/object:Gem::Version
84
- version: '12.3'
84
+ version: 13.0.3
85
85
  - !ruby/object:Gem::Dependency
86
86
  name: rdoc
87
87
  requirement: !ruby/object:Gem::Requirement
@@ -102,14 +102,14 @@ dependencies:
102
102
  requirements:
103
103
  - - "~>"
104
104
  - !ruby/object:Gem::Version
105
- version: 3.7.0
105
+ version: '3.10'
106
106
  type: :development
107
107
  prerelease: false
108
108
  version_requirements: !ruby/object:Gem::Requirement
109
109
  requirements:
110
110
  - - "~>"
111
111
  - !ruby/object:Gem::Version
112
- version: 3.7.0
112
+ version: '3.10'
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: webmock
115
115
  requirement: !ruby/object:Gem::Requirement
@@ -130,84 +130,98 @@ dependencies:
130
130
  requirements:
131
131
  - - '='
132
132
  - !ruby/object:Gem::Version
133
- version: 1.3.0
133
+ version: '1.4'
134
134
  type: :development
135
135
  prerelease: false
136
136
  version_requirements: !ruby/object:Gem::Requirement
137
137
  requirements:
138
138
  - - '='
139
139
  - !ruby/object:Gem::Version
140
- version: 1.3.0
140
+ version: '1.4'
141
141
  - !ruby/object:Gem::Dependency
142
- name: colorize
142
+ name: bundler
143
143
  requirement: !ruby/object:Gem::Requirement
144
144
  requirements:
145
145
  - - ">="
146
146
  - !ruby/object:Gem::Version
147
- version: 0.7.0
147
+ version: 1.10.0
148
148
  type: :runtime
149
149
  prerelease: false
150
150
  version_requirements: !ruby/object:Gem::Requirement
151
151
  requirements:
152
152
  - - ">="
153
153
  - !ruby/object:Gem::Version
154
- version: 0.7.0
154
+ version: 1.10.0
155
155
  - !ruby/object:Gem::Dependency
156
- name: highline
156
+ name: codenamev_bitbucket_api
157
157
  requirement: !ruby/object:Gem::Requirement
158
158
  requirements:
159
- - - ">="
159
+ - - '='
160
160
  - !ruby/object:Gem::Version
161
- version: '0'
161
+ version: 0.4.1
162
162
  type: :runtime
163
163
  prerelease: false
164
164
  version_requirements: !ruby/object:Gem::Requirement
165
165
  requirements:
166
- - - ">="
166
+ - - '='
167
167
  - !ruby/object:Gem::Version
168
- version: '0'
168
+ version: 0.4.1
169
169
  - !ruby/object:Gem::Dependency
170
- name: httpclient
170
+ name: colorize
171
171
  requirement: !ruby/object:Gem::Requirement
172
172
  requirements:
173
173
  - - ">="
174
174
  - !ruby/object:Gem::Version
175
- version: '0'
175
+ version: 0.8.1
176
176
  type: :runtime
177
177
  prerelease: false
178
178
  version_requirements: !ruby/object:Gem::Requirement
179
179
  requirements:
180
180
  - - ">="
181
181
  - !ruby/object:Gem::Version
182
- version: '0'
182
+ version: 0.8.1
183
183
  - !ruby/object:Gem::Dependency
184
184
  name: github_api
185
185
  requirement: !ruby/object:Gem::Requirement
186
186
  requirements:
187
187
  - - '='
188
188
  - !ruby/object:Gem::Version
189
- version: 0.18.2
189
+ version: '0.19'
190
190
  type: :runtime
191
191
  prerelease: false
192
192
  version_requirements: !ruby/object:Gem::Requirement
193
193
  requirements:
194
194
  - - '='
195
195
  - !ruby/object:Gem::Version
196
- version: 0.18.2
196
+ version: '0.19'
197
197
  - !ruby/object:Gem::Dependency
198
- name: reenhanced_bitbucket_api
198
+ name: highline
199
199
  requirement: !ruby/object:Gem::Requirement
200
200
  requirements:
201
- - - '='
201
+ - - ">="
202
202
  - !ruby/object:Gem::Version
203
- version: 0.3.2
203
+ version: '0'
204
204
  type: :runtime
205
205
  prerelease: false
206
206
  version_requirements: !ruby/object:Gem::Requirement
207
207
  requirements:
208
- - - '='
208
+ - - ">="
209
209
  - !ruby/object:Gem::Version
210
- version: 0.3.2
210
+ version: '0'
211
+ - !ruby/object:Gem::Dependency
212
+ name: httpclient
213
+ requirement: !ruby/object:Gem::Requirement
214
+ requirements:
215
+ - - ">="
216
+ - !ruby/object:Gem::Version
217
+ version: '0'
218
+ type: :runtime
219
+ prerelease: false
220
+ version_requirements: !ruby/object:Gem::Requirement
221
+ requirements:
222
+ - - ">="
223
+ - !ruby/object:Gem::Version
224
+ version: '0'
211
225
  description: Git Reflow manages your git workflow.
212
226
  email:
213
227
  - dev@reenhanced.com
@@ -216,6 +230,7 @@ executables:
216
230
  extensions: []
217
231
  extra_rdoc_files: []
218
232
  files:
233
+ - ".github/workflows/multi-ruby-tests.yml"
219
234
  - ".gitignore"
220
235
  - ".rubocop.yml"
221
236
  - ".ruby-version"
@@ -226,10 +241,10 @@ files:
226
241
  - LICENSE
227
242
  - README.md
228
243
  - Rakefile
244
+ - Workflow
229
245
  - _config.yml
230
246
  - bin/console
231
247
  - bin/setup
232
- - circle.yml
233
248
  - exe/git-reflow
234
249
  - git_reflow.gemspec
235
250
  - lib/git_reflow.rb
@@ -254,6 +269,7 @@ files:
254
269
  - lib/git_reflow/workflow.rb
255
270
  - lib/git_reflow/workflows/FlatMergeWorkflow
256
271
  - lib/git_reflow/workflows/core.rb
272
+ - spec/fixtures/authentication_failure.json
257
273
  - spec/fixtures/awesome_workflow.rb
258
274
  - spec/fixtures/git/git_config
259
275
  - spec/fixtures/issues/comment.json.erb
@@ -275,6 +291,7 @@ files:
275
291
  - spec/fixtures/repositories/commit.json.erb
276
292
  - spec/fixtures/repositories/commits.json.erb
277
293
  - spec/fixtures/repositories/statuses.json
294
+ - spec/fixtures/users/user.json
278
295
  - spec/lib/git_reflow/config_spec.rb
279
296
  - spec/lib/git_reflow/git_helpers_spec.rb
280
297
  - spec/lib/git_reflow/git_server/bit_bucket_spec.rb
@@ -318,12 +335,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
318
335
  - !ruby/object:Gem::Version
319
336
  version: '0'
320
337
  requirements: []
321
- rubyforge_project:
322
- rubygems_version: 2.7.6
323
- signing_key:
338
+ rubygems_version: 3.2.3
339
+ signing_key:
324
340
  specification_version: 4
325
341
  summary: A better git process
326
342
  test_files:
343
+ - spec/fixtures/authentication_failure.json
327
344
  - spec/fixtures/awesome_workflow.rb
328
345
  - spec/fixtures/git/git_config
329
346
  - spec/fixtures/issues/comment.json.erb
@@ -345,6 +362,7 @@ test_files:
345
362
  - spec/fixtures/repositories/commit.json.erb
346
363
  - spec/fixtures/repositories/commits.json.erb
347
364
  - spec/fixtures/repositories/statuses.json
365
+ - spec/fixtures/users/user.json
348
366
  - spec/lib/git_reflow/config_spec.rb
349
367
  - spec/lib/git_reflow/git_helpers_spec.rb
350
368
  - spec/lib/git_reflow/git_server/bit_bucket_spec.rb