git_reflow 0.9.6 → 0.9.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3f15edd7ea0d9df95980438cf9e846bd6b3e07829ef05adcc63c7b548c55c623
4
- data.tar.gz: f315bc14d8ce7873db9f3e4708da9db581bec1bff63d2302465eb356450a2196
3
+ metadata.gz: 71b211551532be88db262a0a26ecb4a63072b7090eafbbadff217efe80bb4c3b
4
+ data.tar.gz: ef3434b6020aa61b9da30b7602f162f9da8ca99ae3da4de32fdc30bcc3f648f1
5
5
  SHA512:
6
- metadata.gz: bf83e0671b38cd6b3e2f1a008068ad038cee28177ead79a1646994987b0e24141aeb41b0ee191e3856f7f0032df703b66b6a08e41949e319e68ad7dbea9e0bc1
7
- data.tar.gz: 948128297b7ba1a38476fb48a81e1f238745a04966295e8506556cf61c1efacc32a98ea8d2966af43ffaa09a536c03790b6b04f129f65bab779ddfd5e9eeb5ed
6
+ metadata.gz: 1cc0b3e505894ea29a5322014f8459fdc41a74da50098c2f8fffa58039b1d94558538c0d03b824af949a985e34b1cc3a151f84b83b191e6c4df74f321785f82a
7
+ data.tar.gz: 3737b674eb342c8b8fe0047b637c978b0fdad4d30c228061343f20d9171e9278e0f9356a752f79e0d7d032e7ba969dd5a7f963f654b8e58955ec0eada3673b6a
@@ -12,7 +12,7 @@ jobs:
12
12
  fail-fast: true
13
13
  matrix:
14
14
  os: [ ubuntu-latest, macos-latest ]
15
- ruby: ['2.6.6', '2.7.2', '3.0.0 ']
15
+ ruby: ['2.6.9', '2.7.5', '3.0.3 ', '3.1.1']
16
16
  runs-on: ${{ matrix.os }}
17
17
  steps:
18
18
  - uses: actions/checkout@v2
data/CHANGELOG.md CHANGED
@@ -1,5 +1,34 @@
1
1
  # Changelog
2
2
 
3
+ ## [v0.9.9](https://github.com/reenhanced/gitreflow/tree/v0.9.9) (2022-03-01)
4
+
5
+ [Full Changelog](https://github.com/reenhanced/gitreflow/compare/v0.9.7...HEAD)
6
+
7
+ **Bug fixes:**
8
+
9
+ - Fixes issue with custom workflows failing to load due to a race condition
10
+ preventing GitReflow.logger from loading before the rest of the library in
11
+ Ruby 3.0+
12
+ - Cleans up tests and bump Ruby versions in GH workflows
13
+
14
+ ## [v0.9.8](https://github.com/reenhanced/gitreflow/tree/v0.9.8) (2022-02-20)
15
+
16
+ [Full Changelog](https://github.com/reenhanced/gitreflow/compare/v0.9.7...HEAD)
17
+
18
+ **Bug fixes:**
19
+
20
+ - Fixes a bug accidentally introduced when attempting to debug OptionParser issue.
21
+
22
+ # Changelog
23
+
24
+ ## [v0.9.7](https://github.com/reenhanced/gitreflow/tree/v0.9.7) (2022-02-20)
25
+
26
+ [Full Changelog](https://github.com/reenhanced/gitreflow/compare/v0.9.6...HEAD)
27
+
28
+ **Bug fixes:**
29
+
30
+ - Correctly parse command line flag and switch values when no help docs are provided
31
+
3
32
  ## [v0.9.6](https://github.com/reenhanced/gitreflow/tree/v0.9.6) (2021-11-05)
4
33
 
5
34
  [Full Changelog](https://github.com/reenhanced/gitreflow/compare/v0.9.5...HEAD)
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- git_reflow (0.9.6)
4
+ git_reflow (0.9.9)
5
5
  bundler (>= 1.10.0)
6
6
  codenamev_bitbucket_api (= 0.4.1)
7
7
  colorize (>= 0.8.1)
@@ -95,17 +95,17 @@ GEM
95
95
  concurrent-ruby (~> 1.0)
96
96
  jwt (2.3.0)
97
97
  method_source (1.0.0)
98
- mini_portile2 (2.6.1)
98
+ mini_portile2 (2.8.0)
99
99
  minitest (5.14.4)
100
100
  multi_json (1.15.0)
101
101
  multi_xml (0.6.0)
102
102
  multipart-post (2.1.1)
103
103
  nio4r (2.5.7)
104
- nokogiri (1.12.5)
105
- mini_portile2 (~> 2.6.1)
104
+ nokogiri (1.13.3)
105
+ mini_portile2 (~> 2.8.0)
106
106
  racc (~> 1.4)
107
- oauth2 (1.4.7)
108
- faraday (>= 0.8, < 2.0)
107
+ oauth2 (1.4.9)
108
+ faraday (>= 0.17.3, < 3.0)
109
109
  jwt (>= 1.0, < 3.0)
110
110
  multi_json (~> 1.3)
111
111
  multi_xml (~> 0.5)
@@ -14,6 +14,8 @@ module GitReflow
14
14
 
15
15
  def git_root_dir
16
16
  return @git_root_dir unless @git_root_dir.to_s.empty?
17
+ return @git_root_dir = Dir.pwd if Dir.exists?("#{Dir.pwd}/.git")
18
+
17
19
  @git_root_dir = run('git rev-parse --show-toplevel', loud: false).strip
18
20
  end
19
21
 
@@ -1,3 +1,3 @@
1
1
  module GitReflow
2
- VERSION = "0.9.6"
2
+ VERSION = "0.9.9"
3
3
  end
@@ -1,3 +1,4 @@
1
+ require 'git_reflow/logger'
1
2
  require 'git_reflow/sandbox'
2
3
  require 'git_reflow/git_helpers'
3
4
  require 'bundler/inline'
@@ -77,8 +78,12 @@ module GitReflow
77
78
  GitReflow.git_server
78
79
  end
79
80
 
80
- def logger
81
- GitReflow.logger
81
+ def logger(*args)
82
+ return @logger if defined?(@logger)
83
+
84
+ @logger = GitReflow.try(:logger, *args) || GitReflow::Logger.new(*args)
85
+ rescue NoMethodError
86
+ @logger = GitReflow::Logger.new(*args)
82
87
  end
83
88
 
84
89
  # Checks for an installed gem, and if none is installed use bundler's
@@ -113,10 +118,10 @@ module GitReflow
113
118
  # @param name [String] the name of the Workflow file to use as a basis
114
119
  def use(workflow_name)
115
120
  if workflows.key?(workflow_name)
116
- GitReflow.logger.debug "Using Workflow: #{workflow_name}"
121
+ logger.debug "Using Workflow: #{workflow_name}"
117
122
  GitReflow::Workflows::Core.load_workflow(workflows[workflow_name])
118
123
  else
119
- GitReflow.logger.error "Tried to use non-existent Workflow: #{workflow_name}"
124
+ logger.error "Tried to use non-existent Workflow: #{workflow_name}"
120
125
  end
121
126
  end
122
127
 
@@ -157,6 +162,7 @@ module GitReflow
157
162
  self.commands[name] = params
158
163
  self.command_docs[name] = params
159
164
 
165
+ logger.debug "adding new command '#{name}' with #{defaults.inspect}"
160
166
  self.define_singleton_method(name) do |args = {}|
161
167
  args_with_defaults = {}
162
168
  args.each do |name, value|
@@ -173,18 +179,18 @@ module GitReflow
173
179
  end
174
180
  end
175
181
 
176
- GitReflow.logger.debug "callbacks: #{callbacks.inspect}"
182
+ logger.debug "callbacks: #{callbacks.inspect}"
177
183
  Array(callbacks[:before][name]).each do |block|
178
- GitReflow.logger.debug "(before) callback running for `#{name}` command..."
184
+ logger.debug "(before) callback running for `#{name}` command..."
179
185
  argument_overrides = block.call(**args_with_defaults) || {}
180
186
  args_with_defaults.merge!(argument_overrides) if argument_overrides.is_a?(Hash)
181
187
  end
182
188
 
183
- GitReflow.logger.info "Running command `#{name}` with args: #{args_with_defaults.inspect}..."
189
+ logger.info "Running command `#{name}` with args: #{args_with_defaults.inspect}..."
184
190
  block.call(**args_with_defaults)
185
191
 
186
192
  Array(callbacks[:after][name]).each do |block|
187
- GitReflow.logger.debug "(after) callback running for `#{name}` command..."
193
+ logger.debug "(after) callback running for `#{name}` command..."
188
194
  block.call(**args_with_defaults)
189
195
  end
190
196
  end
@@ -202,9 +208,9 @@ module GitReflow
202
208
  def before(name, &block)
203
209
  name = name.to_sym
204
210
  if commands[name].nil?
205
- GitReflow.logger.error "Attempted to register (before) callback for non-existing command: #{name}"
211
+ logger.error "Attempted to register (before) callback for non-existing command: #{name}"
206
212
  else
207
- GitReflow.logger.debug "(before) callback registered for: #{name}"
213
+ logger.debug "(before) callback registered for: #{name}"
208
214
  callbacks[:before][name] ||= []
209
215
  callbacks[:before][name] << block
210
216
  end
@@ -222,9 +228,9 @@ module GitReflow
222
228
  def after(name, &block)
223
229
  name = name.to_sym
224
230
  if commands[name].nil?
225
- GitReflow.logger.error "Attempted to register (after) callback for non-existing command: #{name}"
231
+ logger.error "Attempted to register (after) callback for non-existing command: #{name}"
226
232
  else
227
- GitReflow.logger.debug "(after) callback registered for: #{name}"
233
+ logger.debug "(after) callback registered for: #{name}"
228
234
  callbacks[:after][name] ||= []
229
235
  callbacks[:after][name] << block
230
236
  end
@@ -310,13 +316,19 @@ module GitReflow
310
316
  opts.separator "COMMAND OPTIONS:" if docs[:flags].any? || docs[:switches].any?
311
317
 
312
318
  self.commands[name][:flags].each do |flag_name, flag_default|
313
- opts.on("-#{flag_name[0]}", "--#{flag_name} #{flag_name.upcase}", command_docs[name][:flags][flag_name]) do |f|
319
+ # There is a bug in Ruby that will not parse the flag value if no
320
+ # help text is provided. Fallback to the flag name.
321
+ flag_help = command_docs[name][:flags][flag_name] || flag_name
322
+ opts.on("-#{flag_name[0]}", "--#{flag_name} #{flag_name.upcase}", flag_help) do |f|
314
323
  options[kebab_to_underscore(flag_name)] = f || flag_default
315
324
  end
316
325
  end
317
326
 
318
327
  self.commands[name][:switches].each do |switch_name, switch_default|
319
- opts.on("-#{switch_name[0]}", "--[no-]#{switch_name}", command_docs[name][:switches][switch_name]) do |s|
328
+ # There is a bug in Ruby that will not parse the switch value if no
329
+ # help text is provided. Fallback to the switch name.
330
+ switch_help = command_docs[name][:switches][switch_name] || switch_name
331
+ opts.on("-#{switch_name[0]}", "--[no-]#{switch_name}", switch_help) do |s|
320
332
  options[kebab_to_underscore(switch_name)] = s || switch_default
321
333
  end
322
334
  end
@@ -13,7 +13,7 @@ module GitReflow
13
13
  # @param workflow_path [String] the path of the Workflow file to eval
14
14
  def self.load_workflow(workflow_path)
15
15
  return unless workflow_path.length > 0 and File.exists?(workflow_path)
16
- ::GitReflow.logger.debug "Using workflow: #{workflow_path}"
16
+ logger.debug "Using workflow: #{workflow_path}"
17
17
  self.load_raw_workflow(File.read(workflow_path))
18
18
  end
19
19
 
@@ -22,7 +22,7 @@ module GitReflow
22
22
  # @param workflow_string [String] the contents of a Workflow file to eval
23
23
  def self.load_raw_workflow(workflow_string)
24
24
  return if workflow_string.strip.empty?
25
- ::GitReflow.logger.debug "Evaluating workflow..."
25
+ logger.debug "Evaluating workflow..."
26
26
  binding.eval(workflow_string)
27
27
  end
28
28
 
@@ -30,7 +30,15 @@ describe GitReflow::GitHelpers do
30
30
 
31
31
  describe ".git_root_dir" do
32
32
  subject { Gitacular.git_root_dir }
33
- it { expect { subject }.to have_run_command_silently "git rev-parse --show-toplevel" }
33
+
34
+ before { Gitacular.instance_variable_set(:@git_root_dir, nil) }
35
+
36
+ it { expect(subject).to eq(Dir.pwd) }
37
+
38
+ context "when not in the root directory" do
39
+ before { allow(Dir).to receive(:pwd).and_return("/tmp/nope") }
40
+ it { expect { subject }.to have_run_command_silently "git rev-parse --show-toplevel" }
41
+ end
34
42
  end
35
43
 
36
44
  describe ".git_editor_command" do
@@ -34,7 +34,6 @@ describe GitReflow::Workflows::Core do
34
34
  end
35
35
 
36
36
  describe ".load_raw_workflow(workflow_string)" do
37
- before { allow(GitReflow::Workflows::Core).to receive(:load_workflow).and_call_original }
38
37
  it "evaluates the raw string in the context of the Core workflow" do
39
38
  workflow_content = <<~WORKFLOW_CONTENT
40
39
  command :dummy do
@@ -44,7 +43,7 @@ describe GitReflow::Workflows::Core do
44
43
  fake_binding = instance_double(Binding)
45
44
  expect(fake_binding).to receive(:eval).with(workflow_content)
46
45
  expect(described_class).to receive(:binding).and_return(fake_binding)
47
- GitReflow::Workflows::Core.load_raw_workflow(workflow_content)
46
+ described_class.load_raw_workflow(workflow_content)
48
47
  end
49
48
  end
50
49
 
@@ -41,6 +41,7 @@ describe GitReflow do
41
41
  it "calls the defined workflow methods instead of the default core" do
42
42
  workflow_path = File.join(File.expand_path("../../fixtures", __FILE__), "/awesome_workflow.rb")
43
43
  allow(GitReflow::Config).to receive(:get).with("reflow.workflow").and_return(workflow_path)
44
+ allow(GitReflow::Workflows::Core).to receive(:load_raw_workflow)
44
45
  expect(GitReflow::Workflows::Core).to receive(:load_raw_workflow).with(File.read(workflow_path)).and_call_original
45
46
 
46
47
  expect{ subject.start }.to have_said "Awesome."
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git_reflow
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.6
4
+ version: 0.9.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Valentino Stoll
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2021-11-05 00:00:00.000000000 Z
13
+ date: 2022-03-01 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: appraisal