release-gem 0.1.30 → 0.3.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b8cc16c62b759b319b58033ee7678d1767aa098f9190c50f38aeaa429694da3d
4
- data.tar.gz: 76da97ad501ca7828a7c0b2bd84de02d50bd9d9933b2c1ea47830cb5f3a54b15
3
+ metadata.gz: 9209c29b3cf5efbd93a7e08f0f7f27d82e3b5f14fc35adfd147d9de85c9539ed
4
+ data.tar.gz: 5f75e8a5573e8f5b581ca5c983f8bd26a74337fbda3e6e64e6f4d75827820ea1
5
5
  SHA512:
6
- metadata.gz: 8585884b1b10d700ed6f913a40776ba50b98f58905ba83611e9cef0dece134f2aba5c9c831e1515902f98a0b9f40b6104dbbcf35f5f472270702bc9c421177e1
7
- data.tar.gz: 2a4ed2747d026f60da0e6e45c0f969d5baac20492659030cb78b6839074f74df4ca8e631c2772a72bdc3593246c1ad70b2c5dea3a8679a10aa8371e784c6c040
6
+ metadata.gz: e7c999d88fe439e06e982319f6d08ca82328a1e42c74640bed2b3f6c9652dcc4c10f2b53149d442ce8bad1a5b9971dbdf298327a771d98054bde304732e54495
7
+ data.tar.gz: 9d5234fa341e95e5c2ea83c677cfde0f626098725788b7805d39aead397bc800cd0e4cf4cdfd678b9e7f60189cd24a3c3eb9f4e1603a342fac605700cba03832
data/Gemfile.lock CHANGED
@@ -1,13 +1,14 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- release-gem (0.1.30)
5
- colorize
6
- git_cli
7
- teLogger
8
- toolrack
9
- tty-command
10
- tty-prompt
4
+ release-gem (0.3.3)
5
+ colorize (~> 1.1)
6
+ git_cli (~> 0.13)
7
+ pastel (~> 0.8)
8
+ teLogger (~> 0.2)
9
+ toolrack (~> 0.23)
10
+ tty-command (~> 0.10)
11
+ tty-prompt (~> 0.23)
11
12
 
12
13
  GEM
13
14
  remote: https://rubygems.org/
@@ -0,0 +1,16 @@
1
+
2
+
3
+ module Release
4
+ module Gem
5
+ module Cli
6
+ def self.cls
7
+ print "\e[2J\e[f"
8
+ end
9
+
10
+ def self.print_header(path = Dir.getwd)
11
+ puts Gem.pastel.bright_yellow("\n Standard GEM CLI release flow version #{Release::Gem::VERSION}")
12
+ puts Gem.pastel.bright_yellow(" Rubygems location : #{path}\n")
13
+ end
14
+ end
15
+ end
16
+ end
@@ -35,7 +35,7 @@ module Release
35
35
 
36
36
  if block
37
37
 
38
- block.call(:action_start, :relase_dependencies)
38
+ block.call(:action_start, :release_dependencies)
39
39
 
40
40
  gemdepInst.development_gem.each do |k,v|
41
41
  res = gemdepInst.infect_gem(v, k, &block)
@@ -45,7 +45,8 @@ module Release
45
45
  end
46
46
 
47
47
 
48
- keys = gemdepInst.development_gem.keys
48
+ #keys = gemdepInst.development_gem.keys
49
+ keys = gemdepInst.development_gem
49
50
  loop do
50
51
  begin
51
52
  conf = block.call(:define_gem_prod_config, { gems: keys })
@@ -59,7 +60,7 @@ module Release
59
60
  block.call(:invalid_gem_prod_config, "Expected return from :define_gem_prod_config is a hash of \"gem name\" => { type: [:runtime | :dev], version: \">= 1.2.0\" }. Note version can be empty")
60
61
  end
61
62
  rescue GemDepError => ex
62
- block.call(:invlid_gem_prod_config, ex.message)
63
+ block.call(:invalid_gem_prod_config, ex.message)
63
64
  end
64
65
  end
65
66
 
@@ -86,7 +87,7 @@ module Release
86
87
  end
87
88
 
88
89
  def dependency_restore
89
- puts "restoring dependency"
90
+ #puts "restoring dependency"
90
91
  gemdepInst.restore_dev_gem
91
92
  end
92
93
 
@@ -127,7 +128,14 @@ module Release
127
128
 
128
129
  cp "Gem version updated. Start building the gem"
129
130
  begin
130
- Rake::Task["build"].execute
131
+
132
+ cmd = "cd #{@root} && rake build"
133
+ Gem.logger.debug "Command to build gem : #{cmd}"
134
+ res = `#{cmd} 2>&1`
135
+ block.call(:gem_building, $?, res) if block
136
+
137
+ #Dir.chdir(@root)
138
+ #Rake::Task["build"].execute
131
139
 
132
140
  if $?
133
141
  cp "Gem build successfully at #{Gem.format_dt(Time.now)}"
@@ -167,39 +175,49 @@ module Release
167
175
 
168
176
  raise GemActionError, "No version given to push. Push aborted" if is_empty?(version)
169
177
 
170
- cred = find_rubygems_api_key
178
+ proceed = block.call(:confirm_proceed, name, version)
179
+ if proceed
171
180
 
172
- selAcct = cred.keys.first
173
- if cred.keys.length > 1
174
- Gem.logger.debug "Multiple rubygems account detected."
175
- # multiple account configured...
176
- if block
177
- selAcct = block.call(:multiple_rubygems_account, cred)
178
- raise GemActionError, "No rubygems account is selected." if is_empty?(selAcct)
181
+ cred = find_rubygems_api_key
182
+
183
+ selAcct = cred.keys.first
184
+ if cred.keys.length > 1
185
+ Gem.logger.debug "Multiple rubygems account detected."
186
+ # multiple account configured...
187
+ if block
188
+ selAcct = block.call(:multiple_rubygems_account, cred)
189
+ raise GemActionError, "No rubygems account is selected." if is_empty?(selAcct)
190
+ end
179
191
  end
180
- end
181
192
 
182
193
 
183
- # find the package
184
- foundGem = Dir.glob(File.join(@root,"**/#{name}-#{version}*.gem"))
185
- if foundGem.length == 0
186
- raise GemActionError, "No built gem with version '#{version}' found."
187
- elsif foundGem.length > 1
188
- if block
189
- targetGem = block.call(:multiple_built_gems, foundGem)
194
+ # find the package
195
+ foundGem = Dir.glob(File.join(@root,"**/#{name}-#{version}*.gem"))
196
+ if foundGem.length == 0
197
+ raise GemActionError, "No built gem with version '#{version}' found."
198
+ elsif foundGem.length > 1
199
+ if block
200
+ targetGem = block.call(:multiple_built_gems, foundGem)
201
+ else
202
+ raise GemActionError, "#{foundGem.length} versions of gem found. Please provide a block for selection"
203
+ end
190
204
  else
191
- raise GemActionError, "#{foundGem.length} versions of gem found. Please provide a block for selection"
205
+ targetGem = foundGem.first
192
206
  end
193
- else
194
- targetGem = foundGem.first
195
- end
196
207
 
197
- cmd = "cd #{@root} && gem push #{targetGem} -k #{selAcct}"
198
- Gem.logger.debug "Command to publish gem : #{cmd}"
199
- res = `#{cmd} 2>&1`
200
- block.call(:gem_push_output, $?, res) if block
201
- [$?, res]
208
+ if cred.length > 1
209
+ cmd = "cd #{@root} && gem push #{targetGem} -k #{selAcct}"
210
+ else
211
+ cmd = "cd #{@root} && gem push #{targetGem} "
212
+ end
213
+ Gem.logger.debug "Command to publish gem : #{cmd}"
214
+ res = `#{cmd} 2>&1`
215
+ block.call(:gem_push_output, $?, res) if block
216
+ [$?, res]
202
217
 
218
+ else
219
+ block.call(:gem_push_skipped, name, version)
220
+ end
203
221
  end
204
222
 
205
223
  def install(*args, &block)
@@ -1,6 +1,7 @@
1
1
 
2
2
  require 'tty/prompt'
3
3
  require_relative 'gem_action'
4
+ require_relative 'cli'
4
5
 
5
6
  module Release
6
7
  module Gem
@@ -20,16 +21,17 @@ module Release
20
21
  instance_eval(&block) if block
21
22
  end
22
23
 
24
+ # proxy method for Action::GemAction#release_dependencies
23
25
  def release_dependencies
24
26
  @inst.release_dependencies do |ops, *args|
25
- case ops
27
+ case ops
26
28
  when :action_start
27
29
  @pmt.say pmsg("\n Release dependencies starting...\n")
28
30
 
29
31
  ## from release_infector
30
32
  when :multiple_gemspec
31
33
  v = args.first
32
- @pmt.select(pmsg("\n There are multiple gemspecs found. Please select one to proceed : ")) do |m|
34
+ @pmt.select(pmsg("\n There are multiple gemspecs found. Please select one to proceed : "), filter: true) do |m|
33
35
  v.each do |vv|
34
36
  m.choice vv, vv
35
37
  end
@@ -61,7 +63,7 @@ module Release
61
63
 
62
64
  when :select_terminal
63
65
  v = args.first
64
- @pmt.select(pmsg("\n Please select a terminal for development GEM '#{v[:name]}' release : ")) do |m|
66
+ @pmt.select(pmsg("\n Please select a terminal for development GEM '#{v[:name]}' release : "), filter: true) do |m|
65
67
  v[:options].each do |t|
66
68
  m.choice t, t
67
69
  end
@@ -85,13 +87,13 @@ module Release
85
87
  when :define_gem_prod_config
86
88
 
87
89
  config = {}
88
- selections = args.first[:gems]
90
+ selections = args.first[:gems].clone
89
91
 
90
92
  loop do
91
93
 
92
- sel = @pmt.select(pmsg("\n The following development gems requires configuration. Please select one to configure ")) do |m|
93
- selections.each do |g|
94
- m.choice g, g
94
+ sel = @pmt.select(pmsg("\n The following development gems requires configuration. Please select one to configure "), filter: true) do |m|
95
+ selections.each do |key, val|
96
+ m.choice key, key
95
97
  end
96
98
  end
97
99
 
@@ -104,7 +106,15 @@ module Release
104
106
 
105
107
  config[sel][:type] = type
106
108
 
107
- ver = @pmt.ask(pmsg("\n Is there specific version pattern (including the ~>/>/>=/= of gemspec) for the gem in production? (Not mandatory) : "))
109
+ gemAct = Action::GemAction.new(selections[sel])
110
+ currentVersion = gemAct.find_gem_version do |ops, *val|
111
+ case ops
112
+ when :multiple_version_files_found
113
+ # abort. Expected only 1 version files exist
114
+ end
115
+ end
116
+
117
+ ver = @pmt.ask(pmsg("\n Is there specific version pattern (including the ~>/>/>=/= of gemspec) for the gem in production? (Not mandatory) : "), value: currentVersion)
108
118
  config[sel][:version] = ver if not_empty?(ver)
109
119
 
110
120
  @pmt.puts pmsg(" ** Done configure for gem #{sel}")
@@ -121,6 +131,9 @@ module Release
121
131
  when :no_development_gems_found
122
132
  @pmt.puts pmsg("\n No development gem(s) in used found")
123
133
 
134
+ when :invalid_gem_prod_config
135
+ @pmt.puts pastel.red(pmsg("\n #{args.first}"))
136
+
124
137
  end
125
138
  end
126
139
 
@@ -148,7 +161,7 @@ module Release
148
161
  if preset
149
162
 
150
163
  opts = args.first
151
- res = @pmt.select(pmsg("\n Please select new gem version : \n")) do |m|
164
+ res = @pmt.select(pmsg("\n Please select new gem version : \n"), filter: true) do |m|
152
165
  opts[:proposed_next].reverse.each do |v|
153
166
  m.choice v,v
154
167
  end
@@ -214,6 +227,11 @@ module Release
214
227
  def push(*pargs, &block)
215
228
  @inst.push(*pargs) do |ops, *args|
216
229
  case ops
230
+ when :confirm_proceed
231
+ name = args.first
232
+ ver = args[1]
233
+ @pmt.yes?(" Push gem '#{name}' version #{ver} to Rubygems? ")
234
+
217
235
  when :multiple_rubygems_account
218
236
  creds = args.first
219
237
  res = @pmt.select(pmsg("\n Multiple rubygems account detected. Please select one : ")) do |m|
@@ -228,13 +246,17 @@ module Release
228
246
  res
229
247
 
230
248
  when :gem_push_output
231
- st = pargs.first
232
- res = pargs[1]
249
+ st = args.first
250
+ res = args[1]
233
251
  if st
234
- @pmt.puts pmsg("\n Gem push successful.", :green)
252
+ @pmt.puts pmsg("\n Gem push successful. #{res}", :green)
235
253
  else
236
254
  @pmt.puts pmsg("\n Gem push failed. Error was :\n #{res}", :red)
237
255
  end
256
+
257
+ when :gem_push_skipped
258
+ @pmt.puts pmsg("\n Gem push skipped", :yellow)
259
+
238
260
  end
239
261
  end
240
262
 
@@ -291,6 +313,10 @@ module Release
291
313
  end
292
314
  end
293
315
 
316
+ def pastel
317
+ Gem.pastel
318
+ end
319
+
294
320
  end
295
321
  end
296
322
  end
@@ -21,7 +21,10 @@ module Release
21
21
  def infect(&block)
22
22
  if not is_release_gem_installed?
23
23
  add_to_gemspec(&block)
24
- Bundler.with_clean_env do
24
+ #Bundler.with_clean_env do
25
+ # Or the warning suggest Bundler.with_original_env
26
+ # not sure which one is correct
27
+ Bundler.with_unbundled_env do
25
28
  res = `cd #{@root} && bundle update 2>&1`
26
29
  puts res
27
30
  end
@@ -40,7 +43,8 @@ module Release
40
43
  raise ReleaseInfectorError, "No possible terminal found" if is_empty?(poss)
41
44
 
42
45
  terminal = ""
43
- Bundler.with_clean_env do
46
+ #Bundler.with_clean_env do
47
+ Bundler.with_unbundled_env do
44
48
 
45
49
  cmd = "cd #{@root} && bundle update 2>&1 && rake gem:release"
46
50
  if block
@@ -120,7 +124,7 @@ module Release
120
124
 
121
125
  File.open(gs, "w") do |f|
122
126
  f.write cont[0...lastEnd]
123
- f.puts " spec.add_development_dependency 'release-gem'"
127
+ f.puts " spec.add_development_dependency 'release-gem', \"~> #{Release::Gem::VERSION}\" "
124
128
  f.puts "end"
125
129
  end
126
130
  block.call(:gemspec_updated, name: @name, gemspec: gs ) if block