git_reflow 0.9.3 → 0.9.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.
- checksums.yaml +4 -4
- data/.github/workflows/multi-ruby-tests.yml +2 -11
- data/.rubocop.yml +7 -0
- data/.ruby-version +1 -1
- data/CHANGELOG.md +95 -12
- data/Gemfile.lock +99 -59
- data/README.md +7 -3
- data/git_reflow.gemspec +6 -6
- data/lib/git_reflow/config.rb +4 -4
- data/lib/git_reflow/git_helpers.rb +10 -4
- data/lib/git_reflow/git_server/git_hub/pull_request.rb +22 -6
- data/lib/git_reflow/git_server/git_hub.rb +3 -2
- data/lib/git_reflow/git_server/pull_request.rb +15 -1
- data/lib/git_reflow/version.rb +1 -1
- data/lib/git_reflow/workflow.rb +12 -5
- data/spec/lib/git_reflow/git_helpers_spec.rb +92 -72
- data/spec/lib/git_reflow/git_server/git_hub/pull_request_spec.rb +1 -1
- data/spec/lib/git_reflow/git_server/pull_request_spec.rb +33 -5
- data/spec/lib/git_reflow_spec.rb +0 -1
- data/spec/spec_helper.rb +1 -1
- metadata +16 -16
data/Gemfile.lock
CHANGED
|
@@ -1,29 +1,47 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
git_reflow (0.9.
|
|
4
|
+
git_reflow (0.9.7)
|
|
5
5
|
bundler (>= 1.10.0)
|
|
6
6
|
codenamev_bitbucket_api (= 0.4.1)
|
|
7
|
-
colorize (>= 0.
|
|
8
|
-
github_api (= 0.
|
|
7
|
+
colorize (>= 0.8.1)
|
|
8
|
+
github_api (= 0.19)
|
|
9
9
|
highline
|
|
10
10
|
httpclient
|
|
11
11
|
|
|
12
12
|
GEM
|
|
13
13
|
remote: https://rubygems.org/
|
|
14
14
|
specs:
|
|
15
|
-
activesupport (6.
|
|
15
|
+
activesupport (6.1.3)
|
|
16
16
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
17
|
-
i18n (>=
|
|
18
|
-
minitest (
|
|
19
|
-
tzinfo (~>
|
|
20
|
-
zeitwerk (~> 2.
|
|
17
|
+
i18n (>= 1.6, < 2)
|
|
18
|
+
minitest (>= 5.1)
|
|
19
|
+
tzinfo (~> 2.0)
|
|
20
|
+
zeitwerk (~> 2.3)
|
|
21
21
|
addressable (2.7.0)
|
|
22
22
|
public_suffix (>= 2.0.2, < 5.0)
|
|
23
|
-
appraisal (2.
|
|
23
|
+
appraisal (2.4.0)
|
|
24
24
|
bundler
|
|
25
25
|
rake
|
|
26
26
|
thor (>= 0.14.0)
|
|
27
|
+
async (1.28.9)
|
|
28
|
+
console (~> 1.10)
|
|
29
|
+
nio4r (~> 2.3)
|
|
30
|
+
timers (~> 4.1)
|
|
31
|
+
async-http (0.54.1)
|
|
32
|
+
async (~> 1.25)
|
|
33
|
+
async-io (~> 1.28)
|
|
34
|
+
async-pool (~> 0.2)
|
|
35
|
+
protocol-http (~> 0.21.0)
|
|
36
|
+
protocol-http1 (~> 0.13.0)
|
|
37
|
+
protocol-http2 (~> 0.14.0)
|
|
38
|
+
async-http-faraday (0.9.0)
|
|
39
|
+
async-http (~> 0.42)
|
|
40
|
+
faraday
|
|
41
|
+
async-io (1.30.2)
|
|
42
|
+
async (~> 1.14)
|
|
43
|
+
async-pool (0.3.5)
|
|
44
|
+
async (~> 1.25)
|
|
27
45
|
byebug (11.1.3)
|
|
28
46
|
chronic (0.10.2)
|
|
29
47
|
codenamev_bitbucket_api (0.4.1)
|
|
@@ -33,28 +51,36 @@ GEM
|
|
|
33
51
|
multi_json (< 2.0)
|
|
34
52
|
nokogiri (>= 1.5.2)
|
|
35
53
|
simple_oauth (>= 0.3.0)
|
|
36
|
-
coderay (1.1.
|
|
54
|
+
coderay (1.1.3)
|
|
37
55
|
colorize (0.8.1)
|
|
38
|
-
concurrent-ruby (1.1.
|
|
39
|
-
|
|
40
|
-
|
|
56
|
+
concurrent-ruby (1.1.8)
|
|
57
|
+
console (1.10.1)
|
|
58
|
+
fiber-local
|
|
59
|
+
crack (0.4.5)
|
|
60
|
+
rexml
|
|
41
61
|
descendants_tracker (0.0.4)
|
|
42
62
|
thread_safe (~> 0.3, >= 0.3.1)
|
|
43
|
-
diff-lcs (1.
|
|
44
|
-
faraday (
|
|
63
|
+
diff-lcs (1.4.4)
|
|
64
|
+
faraday (1.3.0)
|
|
65
|
+
faraday-net_http (~> 1.0)
|
|
45
66
|
multipart-post (>= 1.2, < 3)
|
|
67
|
+
ruby2_keywords
|
|
46
68
|
faraday-http-cache (2.2.0)
|
|
47
69
|
faraday (>= 0.8)
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
70
|
+
faraday-net_http (1.0.1)
|
|
71
|
+
faraday_middleware (1.2.0)
|
|
72
|
+
faraday (~> 1.0)
|
|
73
|
+
fiber-local (1.0.0)
|
|
74
|
+
github_api (0.19.0)
|
|
51
75
|
addressable (~> 2.4)
|
|
52
76
|
descendants_tracker (~> 0.0.4)
|
|
53
|
-
faraday (
|
|
77
|
+
faraday (>= 0.8, < 2)
|
|
54
78
|
hashie (~> 3.5, >= 3.5.2)
|
|
55
79
|
oauth2 (~> 1.0)
|
|
56
|
-
github_changelog_generator (1.
|
|
80
|
+
github_changelog_generator (1.16.1)
|
|
57
81
|
activesupport
|
|
82
|
+
async (>= 1.25.0)
|
|
83
|
+
async-http-faraday
|
|
58
84
|
faraday-http-cache
|
|
59
85
|
multi_json
|
|
60
86
|
octokit (~> 4.6)
|
|
@@ -65,81 +91,95 @@ GEM
|
|
|
65
91
|
hashie (3.6.0)
|
|
66
92
|
highline (2.0.3)
|
|
67
93
|
httpclient (2.8.3)
|
|
68
|
-
i18n (1.8.
|
|
94
|
+
i18n (1.8.9)
|
|
69
95
|
concurrent-ruby (~> 1.0)
|
|
70
|
-
jwt (2.
|
|
96
|
+
jwt (2.3.0)
|
|
71
97
|
method_source (1.0.0)
|
|
72
|
-
mini_portile2 (2.
|
|
73
|
-
minitest (5.14.
|
|
74
|
-
multi_json (1.
|
|
98
|
+
mini_portile2 (2.7.1)
|
|
99
|
+
minitest (5.14.4)
|
|
100
|
+
multi_json (1.15.0)
|
|
75
101
|
multi_xml (0.6.0)
|
|
76
102
|
multipart-post (2.1.1)
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
103
|
+
nio4r (2.5.7)
|
|
104
|
+
nokogiri (1.13.1)
|
|
105
|
+
mini_portile2 (~> 2.7.0)
|
|
106
|
+
racc (~> 1.4)
|
|
107
|
+
oauth2 (1.4.9)
|
|
108
|
+
faraday (>= 0.17.3, < 3.0)
|
|
81
109
|
jwt (>= 1.0, < 3.0)
|
|
82
110
|
multi_json (~> 1.3)
|
|
83
111
|
multi_xml (~> 0.5)
|
|
84
112
|
rack (>= 1.2, < 3)
|
|
85
|
-
octokit (4.
|
|
113
|
+
octokit (4.20.0)
|
|
86
114
|
faraday (>= 0.9)
|
|
87
115
|
sawyer (~> 0.8.0, >= 0.5.3)
|
|
116
|
+
protocol-hpack (1.4.2)
|
|
117
|
+
protocol-http (0.21.0)
|
|
118
|
+
protocol-http1 (0.13.2)
|
|
119
|
+
protocol-http (~> 0.19)
|
|
120
|
+
protocol-http2 (0.14.2)
|
|
121
|
+
protocol-hpack (~> 1.4)
|
|
122
|
+
protocol-http (~> 0.18)
|
|
88
123
|
pry (0.13.1)
|
|
89
124
|
coderay (~> 1.1)
|
|
90
125
|
method_source (~> 1.0)
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
public_suffix (4.0.5)
|
|
95
|
-
rack (2.2.2)
|
|
126
|
+
public_suffix (4.0.6)
|
|
127
|
+
racc (1.6.0)
|
|
128
|
+
rack (2.2.3)
|
|
96
129
|
rainbow (3.0.0)
|
|
97
|
-
rake (13.0.
|
|
98
|
-
rdoc (6.
|
|
130
|
+
rake (13.0.3)
|
|
131
|
+
rdoc (6.3.0)
|
|
99
132
|
retriable (3.1.2)
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
rspec-
|
|
103
|
-
rspec-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
133
|
+
rexml (3.2.4)
|
|
134
|
+
rspec (3.10.0)
|
|
135
|
+
rspec-core (~> 3.10.0)
|
|
136
|
+
rspec-expectations (~> 3.10.0)
|
|
137
|
+
rspec-mocks (~> 3.10.0)
|
|
138
|
+
rspec-core (3.10.1)
|
|
139
|
+
rspec-support (~> 3.10.0)
|
|
140
|
+
rspec-expectations (3.10.1)
|
|
107
141
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
108
|
-
rspec-support (~> 3.
|
|
109
|
-
rspec-mocks (3.
|
|
142
|
+
rspec-support (~> 3.10.0)
|
|
143
|
+
rspec-mocks (3.10.2)
|
|
110
144
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
111
|
-
rspec-support (~> 3.
|
|
112
|
-
rspec-support (3.
|
|
113
|
-
|
|
145
|
+
rspec-support (~> 3.10.0)
|
|
146
|
+
rspec-support (3.10.2)
|
|
147
|
+
ruby2_keywords (0.0.4)
|
|
148
|
+
ruby_jard (0.3.1)
|
|
149
|
+
byebug (>= 9.1, < 12.0)
|
|
150
|
+
pry (~> 0.13.0)
|
|
151
|
+
tty-screen (~> 0.8.1)
|
|
114
152
|
sawyer (0.8.2)
|
|
115
153
|
addressable (>= 2.3.5)
|
|
116
154
|
faraday (> 0.8, < 2.0)
|
|
117
155
|
simple_oauth (0.3.1)
|
|
118
|
-
thor (1.0
|
|
156
|
+
thor (1.1.0)
|
|
119
157
|
thread_safe (0.3.6)
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
158
|
+
timers (4.3.3)
|
|
159
|
+
tty-screen (0.8.1)
|
|
160
|
+
tzinfo (2.0.4)
|
|
161
|
+
concurrent-ruby (~> 1.0)
|
|
162
|
+
webmock (3.12.1)
|
|
123
163
|
addressable (>= 2.3.6)
|
|
124
164
|
crack (>= 0.3.2)
|
|
125
165
|
hashdiff (>= 0.4.0, < 2.0.0)
|
|
126
166
|
wwtd (1.4.0)
|
|
127
|
-
zeitwerk (2.
|
|
167
|
+
zeitwerk (2.4.2)
|
|
128
168
|
|
|
129
169
|
PLATFORMS
|
|
130
170
|
ruby
|
|
131
171
|
|
|
132
172
|
DEPENDENCIES
|
|
133
|
-
appraisal (= 2.
|
|
173
|
+
appraisal (= 2.4.0)
|
|
134
174
|
chronic
|
|
135
175
|
git_reflow!
|
|
136
176
|
github_changelog_generator
|
|
137
|
-
|
|
138
|
-
rake (~> 13.0.1)
|
|
177
|
+
rake (~> 13.0.3)
|
|
139
178
|
rdoc
|
|
140
|
-
rspec (~> 3.
|
|
179
|
+
rspec (~> 3.10)
|
|
180
|
+
ruby_jard
|
|
141
181
|
webmock
|
|
142
182
|
wwtd (= 1.4)
|
|
143
183
|
|
|
144
184
|
BUNDLED WITH
|
|
145
|
-
2.
|
|
185
|
+
2.2.4
|
data/README.md
CHANGED
|
@@ -443,11 +443,15 @@ If the review is done, it's time to merge. Here's what happens:
|
|
|
443
443
|
|
|
444
444
|
In order to streamline delivery you can set the following git config to:
|
|
445
445
|
|
|
446
|
-
1. always clean up the feature branch after the PR is merged
|
|
446
|
+
1. always clean up the remote feature branch after the PR is merged
|
|
447
447
|
```
|
|
448
|
-
git config --global --add "reflow.always-cleanup" "true"
|
|
448
|
+
git config --global --add "reflow.always-cleanup-remote" "true"
|
|
449
449
|
```
|
|
450
|
-
2. always
|
|
450
|
+
2. always clean up the local feature branch after the PR is merged
|
|
451
|
+
```
|
|
452
|
+
git config --global --add "reflow.always-cleanup-local" "true"
|
|
453
|
+
```
|
|
454
|
+
3. always deliver without further prompt
|
|
451
455
|
```
|
|
452
456
|
git config --global --add "reflow.always-deliver" "true"
|
|
453
457
|
```
|
data/git_reflow.gemspec
CHANGED
|
@@ -19,20 +19,20 @@ Gem::Specification.new do |s|
|
|
|
19
19
|
s.require_paths = ['lib']
|
|
20
20
|
s.rdoc_options << '--title' << 'git_reflow' << '-ri'
|
|
21
21
|
|
|
22
|
-
s.add_development_dependency('appraisal', '2.
|
|
22
|
+
s.add_development_dependency('appraisal', '2.4.0')
|
|
23
23
|
s.add_development_dependency('chronic')
|
|
24
24
|
s.add_development_dependency('github_changelog_generator')
|
|
25
|
-
s.add_development_dependency('
|
|
26
|
-
s.add_development_dependency('rake', '~> 13.0.
|
|
25
|
+
s.add_development_dependency('ruby_jard')
|
|
26
|
+
s.add_development_dependency('rake', '~> 13.0.3')
|
|
27
27
|
s.add_development_dependency('rdoc')
|
|
28
|
-
s.add_development_dependency('rspec', '~> 3.
|
|
28
|
+
s.add_development_dependency('rspec', '~> 3.10')
|
|
29
29
|
s.add_development_dependency('webmock')
|
|
30
30
|
s.add_development_dependency('wwtd', '1.4')
|
|
31
31
|
|
|
32
32
|
s.add_dependency('bundler', '>= 1.10.0')
|
|
33
33
|
s.add_dependency('codenamev_bitbucket_api', '0.4.1')
|
|
34
|
-
s.add_dependency('colorize', '>= 0.
|
|
35
|
-
s.add_dependency('github_api', '0.
|
|
34
|
+
s.add_dependency('colorize', '>= 0.8.1')
|
|
35
|
+
s.add_dependency('github_api', '0.19')
|
|
36
36
|
s.add_dependency('highline')
|
|
37
37
|
s.add_dependency('httpclient')
|
|
38
38
|
|
data/lib/git_reflow/config.rb
CHANGED
|
@@ -14,7 +14,7 @@ module GitReflow
|
|
|
14
14
|
# @option options [Boolean] :all (false) whether to return all keys for a multi-valued key
|
|
15
15
|
# @option options [Boolean] :local (false) whether to get the value specific to the current project
|
|
16
16
|
# @return the value of the git configuration
|
|
17
|
-
def get(key, reload: false, all: false, local: false)
|
|
17
|
+
def get(key, reload: false, all: false, local: false, **_other_options)
|
|
18
18
|
return cached_git_config_value(key) unless reload || cached_git_config_value(key).empty?
|
|
19
19
|
|
|
20
20
|
local = local ? '--local ' : ''
|
|
@@ -32,7 +32,7 @@ module GitReflow
|
|
|
32
32
|
# @param [String] value The value to set it to
|
|
33
33
|
# @option options [Boolean] :local (false) whether to set the value specific to the current project
|
|
34
34
|
# @return the value of the git configuration
|
|
35
|
-
def set(key, value, local: false)
|
|
35
|
+
def set(key, value, local: false, **_other_options)
|
|
36
36
|
value = value.to_s.strip
|
|
37
37
|
if local
|
|
38
38
|
GitReflow::Sandbox.run "git config --replace-all #{key} \"#{value}\"", loud: false, blocking: false
|
|
@@ -47,7 +47,7 @@ module GitReflow
|
|
|
47
47
|
# @option options [Boolean] :value (nil) The value of the key to remove
|
|
48
48
|
# @option options [Boolean] :local (false) whether to remove the value specific to the current project
|
|
49
49
|
# @return the result of running the git command
|
|
50
|
-
def unset(key, value: nil, local: false)
|
|
50
|
+
def unset(key, value: nil, local: false, **_other_options)
|
|
51
51
|
value = value.nil? ? '' : "\"#{value}\""
|
|
52
52
|
if local
|
|
53
53
|
GitReflow::Sandbox.run "git config --unset-all #{key} #{value}", loud: false, blocking: false
|
|
@@ -63,7 +63,7 @@ module GitReflow
|
|
|
63
63
|
# @option options [Boolean] :local (false) whether to set the value specific to the current project
|
|
64
64
|
# @option options [Boolean] :global (false) whether to set the value globaly. if neither local or global is set gitreflow will default to using a configuration file
|
|
65
65
|
# @return the result of running the git command
|
|
66
|
-
def add(key, value, local: false, global: false)
|
|
66
|
+
def add(key, value, local: false, global: false, **_other_options)
|
|
67
67
|
if global
|
|
68
68
|
GitReflow::Sandbox.run "git config --global --add #{key} \"#{value}\"", loud: false, blocking: false
|
|
69
69
|
elsif local
|
|
@@ -47,23 +47,29 @@ module GitReflow
|
|
|
47
47
|
end
|
|
48
48
|
|
|
49
49
|
def pull_request_template
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
50
|
+
custom_template = GitReflow::Config.get('templates.pull-request')
|
|
51
|
+
filenames_to_try = %w[
|
|
52
|
+
.github/PULL_REQUEST_TEMPLATE.md
|
|
53
|
+
.github/PULL_REQUEST_TEMPLATE
|
|
54
|
+
PULL_REQUEST_TEMPLATE.md
|
|
55
|
+
PULL_REQUEST_TEMPLATE
|
|
56
|
+
].map do |file|
|
|
54
57
|
"#{git_root_dir}/#{file}"
|
|
55
58
|
end
|
|
59
|
+
filenames_to_try.unshift(custom_template) unless custom_template.empty?
|
|
56
60
|
|
|
57
61
|
parse_first_matching_template_file(filenames_to_try)
|
|
58
62
|
end
|
|
59
63
|
|
|
60
64
|
def merge_commit_template
|
|
65
|
+
custom_template = GitReflow::Config.get('templates.merge-commit')
|
|
61
66
|
filenames_to_try = %w[.github/MERGE_COMMIT_TEMPLATE.md
|
|
62
67
|
.github/MERGE_COMMIT_TEMPLATE
|
|
63
68
|
MERGE_COMMIT_TEMPLATE.md
|
|
64
69
|
MERGE_COMMIT_TEMPLATE].map do |file|
|
|
65
70
|
"#{git_root_dir}/#{file}"
|
|
66
71
|
end
|
|
72
|
+
filenames_to_try.unshift(custom_template) unless custom_template.empty?
|
|
67
73
|
|
|
68
74
|
parse_first_matching_template_file(filenames_to_try)
|
|
69
75
|
end
|
|
@@ -24,8 +24,18 @@ module GitReflow
|
|
|
24
24
|
base: options[:base]))
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
-
def self.find_open(
|
|
28
|
-
|
|
27
|
+
def self.find_open(options = {})
|
|
28
|
+
options[:to] ||= 'master'
|
|
29
|
+
options[:from] ||= GitReflow.git_server.class.current_branch
|
|
30
|
+
|
|
31
|
+
matching_pull = GitReflow.git_server.connection.pull_requests.all(
|
|
32
|
+
GitReflow.remote_user,
|
|
33
|
+
GitReflow.remote_repo_name,
|
|
34
|
+
base: options[:to],
|
|
35
|
+
head: "#{GitReflow.remote_user}:#{options[:from]}",
|
|
36
|
+
state: 'open'
|
|
37
|
+
).first
|
|
38
|
+
|
|
29
39
|
if matching_pull
|
|
30
40
|
self.new matching_pull
|
|
31
41
|
end
|
|
@@ -147,13 +157,19 @@ module GitReflow
|
|
|
147
157
|
GitReflow.run_command_with_label "git pull origin #{self.base_branch_name}"
|
|
148
158
|
GitReflow.say "Pull request ##{self.number} successfully merged.", :success
|
|
149
159
|
|
|
150
|
-
if
|
|
151
|
-
GitReflow.run_command_with_label "git push origin :#{self.feature_branch_name}"
|
|
160
|
+
if cleanup_remote_feature_branch?
|
|
161
|
+
GitReflow.run_command_with_label "git push origin :#{self.feature_branch_name}", blocking: false
|
|
162
|
+
else
|
|
163
|
+
GitReflow.say "Skipped. Remote feature branch #{self.feature_branch_name} left in tact."
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
if cleanup_local_feature_branch?
|
|
152
167
|
GitReflow.run_command_with_label "git branch -D #{self.feature_branch_name}"
|
|
153
|
-
GitReflow.say "Nice job buddy."
|
|
154
168
|
else
|
|
155
|
-
|
|
169
|
+
GitReflow.say "Skipped. Local feature branch #{self.feature_branch_name} left in tact."
|
|
156
170
|
end
|
|
171
|
+
|
|
172
|
+
GitReflow.say "Nice job buddy."
|
|
157
173
|
else
|
|
158
174
|
GitReflow.say merge_response.to_s, :deliver_halted
|
|
159
175
|
GitReflow.say "There were problems commiting your feature... please check the errors above and try again.", :error
|
|
@@ -84,8 +84,9 @@ module GitReflow
|
|
|
84
84
|
end
|
|
85
85
|
|
|
86
86
|
def authenticate(options = {silent: false})
|
|
87
|
-
|
|
88
|
-
|
|
87
|
+
if !options[:user].to_s.empty?
|
|
88
|
+
self.class.user = options[:user]
|
|
89
|
+
elsif self.class.user.empty?
|
|
89
90
|
self.class.user = ask("Please enter your GitHub username: ")
|
|
90
91
|
end
|
|
91
92
|
|
|
@@ -178,7 +178,21 @@ module GitReflow
|
|
|
178
178
|
end
|
|
179
179
|
|
|
180
180
|
def cleanup_feature_branch?
|
|
181
|
-
|
|
181
|
+
cleanup_local_feature_branch? || cleanup_remote_feature_branch?
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
def cleanup_local_feature_branch?
|
|
185
|
+
# backwards compat
|
|
186
|
+
always_cleanup_local = GitReflow::Config.get('reflow.always-cleanup').to_s
|
|
187
|
+
always_cleanup_local = GitReflow::Config.get('reflow.always-cleanup-local') if always_cleanup_local.empty?
|
|
188
|
+
always_cleanup_local == "true" || (ask "Would you like to cleanup your local feature branch? ") =~ /^y/i
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
def cleanup_remote_feature_branch?
|
|
192
|
+
# backwards compat
|
|
193
|
+
always_cleanup_remote = GitReflow::Config.get('reflow.always-cleanup').to_s
|
|
194
|
+
always_cleanup_remote = GitReflow::Config.get('reflow.always-cleanup-remote') if always_cleanup_remote.empty?
|
|
195
|
+
always_cleanup_remote == "true" || (ask "Would you like to cleanup your remote feature branch? ") =~ /^y/i
|
|
182
196
|
end
|
|
183
197
|
|
|
184
198
|
def deliver?
|
data/lib/git_reflow/version.rb
CHANGED
data/lib/git_reflow/workflow.rb
CHANGED
|
@@ -132,7 +132,7 @@ module GitReflow
|
|
|
132
132
|
@workflows
|
|
133
133
|
end
|
|
134
134
|
|
|
135
|
-
# Creates a singleton method on the
|
|
135
|
+
# Creates a singleton method on the included class
|
|
136
136
|
#
|
|
137
137
|
# This method will take any number of keyword parameters. If @defaults keyword is provided, and the given
|
|
138
138
|
# key(s) in the defaults are not provided as keyword parameters, then it will use the value given in the
|
|
@@ -157,7 +157,8 @@ module GitReflow
|
|
|
157
157
|
self.commands[name] = params
|
|
158
158
|
self.command_docs[name] = params
|
|
159
159
|
|
|
160
|
-
|
|
160
|
+
logger.debug "adding new command '#{name}' with #{defaults.inspect}"
|
|
161
|
+
self.define_singleton_method(name) do |args = {}|
|
|
161
162
|
args_with_defaults = {}
|
|
162
163
|
args.each do |name, value|
|
|
163
164
|
if "#{value}".length <= 0 && !defaults[name].nil?
|
|
@@ -230,7 +231,7 @@ module GitReflow
|
|
|
230
231
|
end
|
|
231
232
|
end
|
|
232
233
|
|
|
233
|
-
# Creates a singleton method on the
|
|
234
|
+
# Creates a singleton method on the included class
|
|
234
235
|
#
|
|
235
236
|
# This method updates the help text associated with the provided command.
|
|
236
237
|
#
|
|
@@ -310,13 +311,19 @@ module GitReflow
|
|
|
310
311
|
opts.separator "COMMAND OPTIONS:" if docs[:flags].any? || docs[:switches].any?
|
|
311
312
|
|
|
312
313
|
self.commands[name][:flags].each do |flag_name, flag_default|
|
|
313
|
-
|
|
314
|
+
# There is a bug in Ruby that will not parse the flag value if no
|
|
315
|
+
# help text is provided. Fallback to the flag name.
|
|
316
|
+
flag_help = command_docs[name][:flags][flag_name] || flag_name
|
|
317
|
+
opts.on("-#{flag_name[0]}", "--#{flag_name} #{flag_name.upcase}", flag_help) do |f|
|
|
314
318
|
options[kebab_to_underscore(flag_name)] = f || flag_default
|
|
315
319
|
end
|
|
316
320
|
end
|
|
317
321
|
|
|
318
322
|
self.commands[name][:switches].each do |switch_name, switch_default|
|
|
319
|
-
|
|
323
|
+
# There is a bug in Ruby that will not parse the switch value if no
|
|
324
|
+
# help text is provided. Fallback to the switch name.
|
|
325
|
+
switch_help = command_docs[name][:switches][switch_name] || switch_name
|
|
326
|
+
opts.on("-#{switch_name[0]}", "--[no-]#{switch_name}", switch_help) do |s|
|
|
320
327
|
options[kebab_to_underscore(switch_name)] = s || switch_default
|
|
321
328
|
end
|
|
322
329
|
end
|