release-gem 0.1.30 → 0.3.0

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: 9fa0f7de3f5def10b5829328b5409fd5236adc500a851ce291c24c80b5c3266e
4
+ data.tar.gz: 16f704d586405286e753f7cf3046c6604126d9dfb168ec6aca97cf9c3684282f
5
5
  SHA512:
6
- metadata.gz: 8585884b1b10d700ed6f913a40776ba50b98f58905ba83611e9cef0dece134f2aba5c9c831e1515902f98a0b9f40b6104dbbcf35f5f472270702bc9c421177e1
7
- data.tar.gz: 2a4ed2747d026f60da0e6e45c0f969d5baac20492659030cb78b6839074f74df4ca8e631c2772a72bdc3593246c1ad70b2c5dea3a8679a10aa8371e784c6c040
6
+ metadata.gz: c23655648823e1de3d485a420afb73a5645a371618c47f0a0fabca3996fc849b60c33bc9613d178e9b9a4dc7e6d323baeaf6a1135bd48d3159e6d414dc1dbf85
7
+ data.tar.gz: c21d2a999a56b8778e1e8c061532f5aced2c0408fcf6317010070b63ada86135bfc4270c33bd50eebf9af0228da37c024ad97e98bb7cba125debe3e276f9ea02
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.0)
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,45 @@ 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
+ cmd = "cd #{@root} && gem push #{targetGem} -k #{selAcct}"
209
+ Gem.logger.debug "Command to publish gem : #{cmd}"
210
+ res = `#{cmd} 2>&1`
211
+ block.call(:gem_push_output, $?, res) if block
212
+ [$?, res]
202
213
 
214
+ else
215
+ block.call(:gem_push_skipped, name, version)
216
+ end
203
217
  end
204
218
 
205
219
  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|
@@ -231,10 +249,13 @@ module Release
231
249
  st = pargs.first
232
250
  res = pargs[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
+
238
259
  end
239
260
  end
240
261
 
@@ -291,6 +312,10 @@ module Release
291
312
  end
292
313
  end
293
314
 
315
+ def pastel
316
+ Gem.pastel
317
+ end
318
+
294
319
  end
295
320
  end
296
321
  end